我正在尝试匹配一个前面没有字符的字符串,但可能根本没有。
示例:我希望匹配" test"的所有情况在括号中,除非它们之前是" ["或" |"。
示例字符串:
(1) {this is a test} // match
(2) {this [is] also a test } // match
(3) {test} // match
(4) {this is the third |test} // no match
(5) {this is the third [test} // no match
我的第一次尝试是:
\{.*[^\||\[]test.*\}
但是,当然,这并不匹配(3),因为括号和" test"之间没有字符。
然后我尝试了一个负面的看法:
\{.*(?!\||\[)test.*\}
但这匹配所有示例字符串。显然,javascript或我正在使用的环境不支持lookbehind。
有办法做到这一点吗?我错过了什么?
感谢。
答案 0 :(得分:2)
答案 1 :(得分:1)
您可以使用以下正则表达式:
\{[^\{\}]*(?<![\[|])test[^\{\}]*\}
步骤:
|
或[
之后不立即进行的测试。