正则匹配默认是贪婪的。给量词
*
,?
,+
后加上?
可切换为非贪婪。
匹配下面所有含 abc
的行:
abc
hello, world
hello, abc, world
hello, world
hello, abc, world
很简单,.*abc.*
,问题是如果要反选呢?这时 ?
应放在 !
前。因此正确的正则写法是:^(?!.*abc).*$
类似地,匹配以 hello
开头,以 world
结尾,不含 abc
的行:^hello(?!.*abc).*world$