我正在使用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)).*$)
我认为我做了一些根本错误的事情,但现在看不到它。
有任何帮助吗?
答案 0 :(得分:4)
答案 1 :(得分:1)
您可以使用丢弃技术来保留您想要的内容,并丢弃您不需要的模式。
例如,使用此正则表达式:
.*X123Y.*|.*XYZ.*|(.*Mouse.*)
您将获取最正常模式的内容并丢弃其他模式。
<强> Working demo 强>
想法是使用:
discard patt 1 | discard patt 2 | discard patt n | (grab this pattern)