我想创建一个正则表达式来查找方括号内的内容,但有一些例外:
如,
[abc] -> It should match
['abc'] -> it should not match
[$abc] -> it should not match
[integer] Like [0] -> it should not match
我使用过这个正则表达式
\[((?!')[^]]*)\]
它适用于前2个条件,但不适用于其他2个条件。
答案 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 ]
答案 1 :(得分:2)
这个正则表达式可以完成这项工作,
\[([^'$\d]+?)\]
<强>解释强>
\[
匹配文字[
符号。()
捕获小组[^'$\d]+?
匹配任何字面'
或$
或\d
的字符一次或多次。在?
进行不情愿(非贪婪)的比赛后+
。\]
匹配文字]
符号。 答案 2 :(得分:0)
你可以完全避免负面的前瞻:
\[[^]'$\d]*\]