正则表达式,用于查找方括号内的内容,但有一些例外:

时间:2014-07-09 12:50:41

标签: regex

我想创建一个正则表达式来查找方括号内的内容,但有一些例外:

如,

[abc]   -> It should match
['abc'] -> it should not match
[$abc]  -> it should not match
[integer] Like [0]  -> it should not match

我使用过这个正则表达式

\[((?!')[^]]*)\] 

它适用于前2个条件,但不适用于其他2个条件。

3 个答案:

答案 0 :(得分:2)

您可以在负前瞻断言中添加$并断言不能匹配整数:

\[((?!['$]|\d+\])[^]]*)\]

<强>解释

\[       # Match [
(        # Capture in group 1:
 (?!     # unless the following matches here: Either...
  ['$]   # one of the characters ' or $
 |       # or
  \d+\]  # a positive integer number, followed by ]
 )       # End of lookahead assertion
 [^]]*   # Match any number of characters except closing brackets
)        # End of group 1
\]       # Match ]

测试live on regex101.com

答案 1 :(得分:2)

这个正则表达式可以完成这项工作,

\[([^'$\d]+?)\]

DEMO

<强>解释

  • \[匹配文字[符号。
  • ()捕获小组
  • [^'$\d]+?匹配任何字面'$\d的字符一次或多次。在?进行不情愿(非贪婪)的比赛后+
  • \]匹配文字]符号。

答案 2 :(得分:0)

你可以完全避免负面的前瞻:

\[[^]'$\d]*\]