【发布时间】:2018-02-23 23:41:29
【问题描述】:
我正在尝试执行一个匹配的正则表达式,如果单词 cat 和 dog 都在正则表达式中,并且具有多行支持的任意顺序
matches
cat asdjfaldsfj dog
####
does NOT match
cat adfasdf8989
####
matches
dog adlsjf88989 cat
####
matches
cat asdf8a89sdf8
a sdf asd f ads f ads fasdf
dog a dsf ads fads f
asdfadsfadsf
我使用的正则表达式非常简单
/^(?=.*\bcat\b)(?=.*\bdog\b).*$/gs
问题是这只找到第一次出现,因为它是贪婪的。我真的希望以下计算两个匹配项,但它只匹配一次
cat asdf8a89sdf8
a sdf asd f ads f ads fasdf
dog a dsf ads fads f
asdfadsfadsf
cat asdf8a89sdf8
a sdf asd f ads f ads fasdf
dog a dsf ads fads f
asdfadsfadsf
即使没有第二组 cat STUFF dog STUFF,正则表达式仍然匹配到最后。
我正在使用 regex101.com 进行测试。
【问题讨论】:
-
这是 Perl 还是 PCRE?你标记了两者,说 PCRE,但是使用 Perl 匹配操作符。
标签: regex perl optimization pcre