正则表达式匹配方括号内的正则表达式

时间:2014-04-11 01:30:15

标签: regex

我有一个字符串,在方括号内包含一个正则表达式,并且在方括号内可以包含多个项目。下面是我使用的字符串示例:

[REGEX:^([0-9])*$][REGEXERROR:That value is not valid]

在上面的示例中,我想匹配项[REGEX:^([0-9])*$],但我无法弄清楚如何。

我以为我尝试使用正则表达式\[REGEX:.*?\],但它匹配[REGEX:^([0-9](即;它在找到第一个]时结束。)

我也尝试了\[REGEX:.*\],但它匹配字符串末尾的所有内容。

有什么想法吗?

1 个答案:

答案 0 :(得分:3)

假设您正在使用PCRE,这应该能够在正则表达式中找到嵌套括号:

\[REGEX:[^\[]*(\[[^\]]*\][^\[]*)*\]

此技术称为展开。这个正则表达式的基本思想是:

  1. 匹配起始括号
  2. 匹配非括号的所有字符
  3. 匹配一个括号
  4. 匹配非括号的所有尾随字符
  5. 然后重复3和4,直到最后一个结束括号
  6. 自由空间说明:

    \[              # start brackets
       REGEX:       # plain match 
       [^\[]*       # match any symbols other than [
       (            # then match nested brackets  
         \[         # the start [ of nested
         [^\]]*     # anything inside the bracket
         \]         # closing bracket 
         [^\[]*     # trailing symbols after brackets
       )*           # repeatable  
    \]              # end brackets
    

    参考:Mastering Regular Expression