我有一个多行文件,我试图找到该文件是否包含正则表达式字符串以外的任何内容。
例如:
test 1 str
test 2 str
unmatched string
示例正则表达式:
/test .* str/
如果在上述数据中找到匹配项,则此正则表达式返回true。但是,我希望它在第一次不匹配时返回false。那可能吗?有什么建议吗?
答案 0 :(得分:1)
use strict;
use warnings;
while(<>)
{
return 0 unless(/test .* str/);
}
return 1;
答案 1 :(得分:1)
通常使用$string =~ /PATTERN/
来测试$string
是否与特定的正则表达式模式匹配。
但是,也可以测试是否为负值,或者不匹配:$string !~ /PATTERN/
。
在这种情况下,我认为你可以做得更简单,如下所示:
use strict;
use warnings;
while (<DATA>) {
print if ! /test.*str/;
}
__DATA__
test 1 str
test 2 str
unmatched string
输出:
unmatched string
答案 2 :(得分:0)
如果你使用这样的正则表达式,你可以使用一个小技巧:
^test . str$|(.*)
<强> Working demo 强>
然后抓取捕获组的内容。如果捕获组包含数据,那么您认为您的文件与您的需求不符。