用于匹配JSON子字符串的某些部分的Java正则表达式

时间:2013-01-23 16:13:54

标签: java regex json string

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

  1. 以左括号{开头,后跟双引号"
  2. 然后允许包含1 + 1个字母数字字符a-zA-Z0-9
  3. 的字符串
  4. 然后是另一个双引号"后跟一个冒号:和一个左括号[
  5. 然后允许任何0 +字母数字字符串a-zA-Z0-9
  6. 因此匹配正则表达式的一些字符串:

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

    一些匹配的字符串:

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

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

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

    但我知道我离开了基地。任何正则表达式专家都可以帮助我进入吗?提前谢谢!

1 个答案:

答案 0 :(得分:5)

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

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

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