【发布时间】:2015-06-02 11:06:56
【问题描述】:
我正在尝试匹配一个前面没有字符的字符串,但可能什么都没有。
示例:我想匹配括号中“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。
有没有办法做到这一点?我错过了什么?
谢谢。
【问题讨论】:
-
请注意,字符类中的
test匹配t、e、s和t字母的任意组合。 -
@MarounMaroun:我完全没有使用正则表达式的经验,但是在给定的搜索模式中我没有看到包含“test”的字符类。
-
你说得对,我的错 :) 但我的笔记仍然有效 ;)
-
@JulianHzg 你想只匹配字符串
test吗? -
@AvinashRaj 我想匹配整件事。 (并将“测试”之前和之后的部分存储在变量中,但这不应该是我认为的问题)。
标签: regex regex-negation