多个字符串的正则表达式

时间:2014-11-14 03:52:56

标签: regex string perl

我有两个字符串,我试图在文件中匹配并返回该行。

第一个字符串将匹配我正在寻找的但不完全匹配。

示例:

我可能在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;
   }

我真正想要工作的是被注释掉的其他选项之一。我认为我没有正确地将两个搜索结合成一个字符串。

提前感谢您的帮助。

1 个答案:

答案 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