我在下面两行尝试了这个正则表达式<a class="checkSomething" href="https://something.com"
。
^([^i]|i(?!s OK))+\.$
我希望这个正则表达式匹配第一个而不是第二个。但它没有匹配。为什么呢?
如果我使用正向前瞻1. /tmp/tmp.oW75zGUh4S ... is O.
2. /tmp/tmp.oW75zGUh4S ... is OK.
,那么它匹配第二个但不是第一个,这是预期的行为。
答案 0 :(得分:0)
在regex101.com上测试后,我发现\n
丢失了。正确的正则表达式是^([^i\n]|i(?!s OK))+$
。
谢谢Wrikken。
更新:只是解释为什么缺少\n
。 ^( ... )+$
是贪婪的,这意味着它会吃掉所有可能的字符,直到它不能,而[^i]
会吃掉任何一个不是i
的字符,所以即便结束在线人物。另外,我错误地认为,因为$
意味着匹配必须以行尾结束,所以匹配不可能以与预防相同的方式越过行尾边界.
通过设置正确的标志来越过行尾边界。 $
可以表示整个字符串的结尾,但我使用了一个标志来阻止它。