繁体   English   中英

正则表达式可以匹配多个字符串,但不能匹配特定的字符串

[英]Regex to match several strings but not specific ones

我正在与Perl合作,以在符合条件的每一行上搜索和匹配字符串,并希望省略包含特定字符串的行。 我的意思是:说我匹配字符串Mouse,但是如果该行匹配X123Y,我想省略。 可以在行的任何位置找到任何一个字符串。

Stackoverflow Mouse forum.       <--Match
Stackoverflow -Mouse- forum.     <--Match
Stackoverflow X123Y forum Mouse. <--Should not Match
Stackoverflow XYZ forum Mouse.   <--Should not Match

我希望这可以解决问题,因为我使用的是负前瞻,但似乎并没有解决问题。

(?i)(\WMouse\W|(?!(X123Y|XYZ)).*$)

我做的事情根本上是我猜错了,但现在看不到。

有什么帮助吗?

此正则表达式应为您工作:

^(?=.*?Mouse)(?:(?!(?:X123|XYZ)).)*$

正则演示

您可以使用丢弃技术来保留所需的内容,并丢弃不需要的模式。

例如,使用此正则表达式:

.*X123Y.*|.*XYZ.*|(.*Mouse.*)

您将获取最合适的模式的内容,而丢弃其他模式。

工作演示

在此处输入图片说明

这个想法是使用:

discard patt 1 | discard patt 2 | discard patt n | (grab this pattern)

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM