Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/perl/10.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Regex 正则表达式匹配多个字符串,但不匹配特定字符串_Regex_Perl_String Matching - Fatal编程技术网

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

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

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

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)