如果他们符合以下格式,我需要验证输入字符串。
\[composite\s*=\s*{(.*?)}\]
这个正则表达式是否可以。不是正则表达式专家。
{{1}}
答案 0 :(得分:0)
您的模式几乎看起来正确,除了大括号是正则表达式元字符并且还需要转义:
String input = "[composite={key1: value1, key2:value2}]";
String pattern = "\\[composite\\s*=\\s*\\{\\s*[A-Za-z0-9]+\\s*:\\s*[A-Za-z0-9]+\\s*(?:,\\s*[A-Za-z0-9]+\\s*:\\s*[A-Za-z0-9]+\\s*)*\\}\\]";
if (input.matches(pattern)) {
System.out.println("match");
}
我还修改了你的模式以检查逗号分隔的键值对,以及可选的空格。以下是有效的输入列表:
[composite={key1: value1}]
[composite={key1: value1 , key2 : value2}]
[composite={key1: value1 , k:v , key:value, abc:123 }]
请注意,如果您可以使用JSON解析器验证括号内容,则可能优于正则表达式。
在这里演示: