取这个正则表达式:/ ^ [^ abc] /。这将匹配字符串开头的任何单个字符,除了a,b或c。
如果在其后添加* / / ^ [^ abc] * / – 正则表达式将继续将每个后续字符添加到结果中,直到它遇到a,或b或c。
例如,对于源字符串“qwerty qwerty whatever abc hello”,表达式将匹配“qwerty qwerty wh”。
但是如果我想要匹配的字符串是“qwerty qwerty任何”
…换句话说,我如何匹配一切到(但不包括)确切的序列“abc”?
你没有指定你正在使用的正则表达式的风味,但这将是
工作在任何最流行的,可以被认为是“完整的”。
工作在任何最流行的,可以被认为是“完整的”。
/.+?(?=abc)/
怎么运行的
的。 ?部分是不贪婪的版本。 (一个或多个
任何东西)。当我们使用。 ,发动机基本上匹配一切。
然后,如果正则表达式中还有其他的东西,它会回到步骤
尝试匹配以下部分。这是贪婪的行为,
意思尽可能多地满足。
使用时。 ?,而不是一次匹配所有并返回
其他条件(如果有),引擎将匹配下一个字符
直到正则表达式的后续部分匹配(如果有的话)。
这是不贪婪的,意思是尽可能少地匹配
满足。
/.+X/ ~ "abcXabcXabcX" /.+/ ~ "abcXabcXabcX" ^^^^^^^^^^^^ ^^^^^^^^^^^^ /.+?X/ ~ "abcXabcXabcX" /.+?/ ~ "abcXabcXabcX" ^^^^ ^
接下来,我们有(?= {content}),零宽度
断言,看看周围。这种分组结构与其匹配
内容,但不计为匹配的字符(零宽度)。它
只有当它是一个匹配(断言)时才返回。
因此,在其他方面,正则表达式。 α(α= abc)/表示:
Match any characters as few as possible until a “abc” is found,without counting the “abc”.