Regex 正则表达式匹配多个字符串,但不匹配特定字符串
我正在使用Perl搜索和匹配每一行中符合条件的字符串,并希望省略包含特定字符串的行。 我的意思是: 假设我正在匹配字符串鼠标,但如果该行与X123Y匹配,我想省略。任何一个字符串都可以在该行的任何位置找到Regex 正则表达式匹配多个字符串,但不匹配特定字符串,regex,perl,string-matching,Regex,Perl,String Matching,我正在使用Perl搜索和匹配每一行中符合条件的字符串,并希望省略包含特定字符串的行。 我的意思是: 假设我正在匹配字符串鼠标,但如果该行与X123Y匹配,我想省略。任何一个字符串都可以在该行的任何位置找到 Stackoverflow Mouse forum. <--Match Stackoverflow -Mouse- forum. <--Match Stackoverflow X123Y forum Mouse. <--Should not Match S
Stackoverflow Mouse forum. <--Match
Stackoverflow -Mouse- forum. <--Match
Stackoverflow X123Y forum Mouse. <--Should not Match
Stackoverflow XYZ forum Mouse. <--Should not Match
我想我做了一些根本错误的事情,但现在看不出来
有什么帮助吗 这个正则表达式应该适合您:
^(?=.*?Mouse)(?:(?!(?:X123|XYZ)).)*$
您可以使用discard技术保留所需的内容,并放弃不需要的模式 例如,使用此正则表达式:
.*X123Y.*|.*XYZ.*|(.*Mouse.*)
您将获取最正确模式的内容,并丢弃其他模式
其想法是使用:
discard patt 1 | discard patt 2 | discard patt n | (grab this pattern)
只需查看演示链接中的正则表达式描述,了解有关此正则表达式的所有详细信息。之后,请随意提问,我会在这里回答。
discard patt 1 | discard patt 2 | discard patt n | (grab this pattern)