我有两个字符串,我试图在文件中匹配并返回该行。
第一个字符串将匹配我正在寻找的但不完全匹配。
示例:
我可能在Matchthisstring中寻找Matcht,所以我匹配但不是整个字符串。
字符串1可能位于字符串2之前或之后,它可能以大写或小写字母开头。
示例:
我可能正在寻找,但实际上有。
但它在一起,我有像Matchthisstring.Actually或actual.Matchthisstring或Matchthisstring.someotherjunkIdon'tcareabout.actually任何其他组合之类的东西。
我在使用两个搜索字符串并让雷鬼工作时会遇到问题。
以下是一些有效的代码示例:
my @matches;
while (<$in_fh>) {
#push @matches, $_ if / \Q$wanted\E .* \Q$prefix\E /x;
#push @matches, $_ if / \Q^*(.*)$wanted\s*(.*)\E .* \Q^*(.*)$prefix\s*(.*)\E /x;
push @matches, $_ if / \Q$wanted\E /x;
}
我真正想要工作的是被注释掉的其他选项之一。我认为我没有正确地将两个搜索结合成一个字符串。
提前感谢您的帮助。
答案 0 :(得分:0)
听起来像你想要的
push @matches, $_ if /\Q$wanted\E/ and /\Q$prefix\E/;
演示:
$ perl -ne 'use strict; use warnings; use vars qw($wanted $prefix @matches);
> BEGIN { $wanted = "/donate"; $prefix = "lghfound"; }
> push @matches, $_ if /\Q$wanted\E/ and /\Q$prefix\E/; print @matches' <<'HERE'
> http://www.google.com/donate
> http://lghfoundation.com/pages/donate.html
> http://example.com
> HERE
http://lghfoundation.com/pages/donate.html
http://lghfoundation.com/pages/donate.html