3

我正在尝试编写一个查找具有以下模式的字符串的正则表达式:

  1. 以左括号{开头,后跟双引号"
  2. 然后允许一串 1+ 字母数字字符a-zA-Z0-9
  3. 然后是另一个双引号",后跟一个冒号:和一个左大括号[
  4. 然后允许任何 0+ 字母数字字符的字符串a-zA-Z0-9

所以一些与正表达式匹配的字符串:

{"hello":[blah
{"hello":[
{"1":[

还有一些匹配的字符串:

{hello:[blah
hello":[
{"2:[

到目前为止,我能想到的最好的是:

String regex = "{\"[a-zA-Z0-9]+\":\[[a-zA-Z0-9]*";
if(myString.matches(regex))
    // do something

但我知道我离基地很远。任何正则表达式大师都可以帮助我吗?提前致谢!

4

1 回答 1

5
String regex = "{\"[a-zA-Z0-9]+\":\[[a-zA-Z0-9]*";

这里的问题是您需要在方括号之前添加一个额外的反斜杠。这是因为您需要包含正则表达式\[以匹配方括号,这意味着字符串文字需要包含\\[以转义 Java 代码解析器的反斜杠。同样,您可能还需要转义{正则表达式中的 ,因为它是元字符(用于有界重复计数)

String regex = "\\{\"[a-zA-Z0-9]+\":\\[[a-zA-Z0-9]*";
于 2013-01-23T16:20:41.237 回答