我有一个字符串,在方括号内包含一个正则表达式,并且在方括号内可以包含多个项目。下面是我使用的字符串示例:
[REGEX:^([0-9])*$][REGEXERROR:That value is not valid]
在上面的示例中,我想匹配项[REGEX:^([0-9])*$]
,但我无法弄清楚如何。
我以为我尝试使用正则表达式\[REGEX:.*?\]
,但它匹配[REGEX:^([0-9]
(即;它在找到第一个]
时结束。)
我也尝试了\[REGEX:.*\]
,但它匹配字符串末尾的所有内容。
有什么想法吗?
答案 0 :(得分:3)
假设您正在使用PCRE,这应该能够在正则表达式中找到嵌套括号:
\[REGEX:[^\[]*(\[[^\]]*\][^\[]*)*\]
此技术称为展开。这个正则表达式的基本思想是:
自由空间说明:
\[ # 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