正则表达式匹配几个字符串,但不匹配特定字符串

Ali*_*Ali 5 regex perl string-matching

我正在使用Perl来搜索和匹配符合条件的每一行的字符串,并且想省略包含特定字符串的行.我的意思是:说我匹配字符串鼠标,但如果该行符合X123Y,我想省略.这两个字符串都可以在线上的任何地方找到.

Stackoverflow Mouse forum.       <--Match
Stackoverflow -Mouse- forum.     <--Match
Stackoverflow X123Y forum Mouse. <--Should not Match
Stackoverflow XYZ forum Mouse.   <--Should not Match
Run Code Online (Sandbox Code Playgroud)

我希望这会解决它,因为我使用负面预测,但似乎没有做到这一点.

(?i)(\WMouse\W|(?!(X123Y|XYZ)).*$)
Run Code Online (Sandbox Code Playgroud)

我认为我做了一些根本错误的事情,但现在看不到它.

有帮助吗?

anu*_*ava 4

这个正则表达式应该适合你:

^(?=.*?Mouse)(?:(?!(?:X123|XYZ)).)*$
Run Code Online (Sandbox Code Playgroud)

正则表达式演示