正则表达式声明改进

时间:2014-07-09 07:23:19

标签: regex

\$\([^\$^\(^\)]*\)

我使用此语句匹配以$字符开头的括号中的任意随机字符串文字。

  • $(random_string) - > $(random_string)应匹配。
  • $($($(cat)hat)bat)) - >只有$(cat)应该匹配(这样才能将匹配放在最内层)
  • $()不应该匹配,但它与上述声明相符。

我该如何预防?

2 个答案:

答案 0 :(得分:3)

表达式\$\([^$()]+\)符合您的规范。

括号中至少需要一个非$()字符。

您可以在此处进行测试:http://regex101.com/r/fL6sV3/1

答案 1 :(得分:1)

在正则表达式中,将*替换为+

\$\([^\$^\(^\)]+\)

DEMO

*表示零或更多,因此它与$()匹配,但+表示一个或多个。现在$()不应该匹配,因为在paranthesis中不存在任何字符。