采用以下正则表达式:/^[^abc]/。这将匹配字符串开头的任何单个字符,a、b或c除外
如果在其后面添加一个*–/^[^abc]*/–正则表达式将继续向结果中添加每个后续字符,直到它遇到a、或b、或c
例如,对于源字符串“qwerty qwerty which abc hello”,表达式将匹配到“qwerty qwerty wh”
但是如果我希望匹配的字符串是“qwerty qwerty whatever”
…换句话说,我如何将所有内容匹配到(但不包括)精确的序列“abc”
您没有指定使用哪种风格的正则表达式,但这将
在任何一个最受欢迎的,可以被认为是“完整”的工作
/.+?(?=abc)/
工作原理
+?部分是+的非贪婪版本(一个或多个
任何东西)。当我们使用+时,引擎将基本上匹配所有内容。
然后,如果正则表达式中还有其他内容,它将按步骤返回
尝试匹配以下部分。这就是贪婪的行为,
意味着尽可能满足
当使用+?时,不要一次匹配所有项并返回
其他条件(如果有),引擎将通过以下方式匹配下一个字符:
步骤,直到正则表达式的后续部分匹配为止(如果有,请再次执行)。
这是不贪婪的,意味着匹配的可能性最小
满足
/.+X/~“abcXabcXabcX”/.+/~“abcXabcXabcX”
^^^^^^^^^^^^ ^^^^^^^^^^^^
/.+?X/~“abcXabcXabcX”/.+?/~“abcXabcXabcX”
^^^^ ^
接下来我们有(?={contents}),一个零宽度
断言,环顾四周。此分组结构与其
内容,但不算作匹配的字符(零宽度)。信息技术
仅在匹配与否时返回(断言)
因此,在其他术语中,regex/.+?(?=abc)/表示:
尽可能少地匹配任何字符,直到找到“abc”,
不算“abc”