Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/string/5.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_String_Perl - Fatal编程技术网

Regex 多字符串的正则表达式

Regex 多字符串的正则表达式,regex,string,perl,Regex,String,Perl,我试图在文件中匹配两个字符串,并仅返回该行 第一个字符串将始终匹配我要查找的内容,但不是完全匹配 例如: 我可能在Matchthisstring中查找Matcht,所以我匹配了但没有匹配整个字符串 字符串1可能位于字符串2之前或之后,并且可能以大写或小写字母开头 例如: 我可能正在寻找,但实际上已经找到了 但是如果把它放在一起,我就有了像Matchthisstring这样的东西。实际上或者实际上。Matchthisstring或者Matchthisstring。其他的Junkidon'tCare

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

第一个字符串将始终匹配我要查找的内容,但不是完全匹配

例如:

我可能在Matchthisstring中查找Matcht,所以我匹配了但没有匹配整个字符串

字符串1可能位于字符串2之前或之后,并且可能以大写或小写字母开头

例如:

我可能正在寻找,但实际上已经找到了

但是如果把它放在一起,我就有了像Matchthisstring这样的东西。实际上或者实际上。Matchthisstring或者Matchthisstring。其他的Junkidon'tCareaout。实际上,任何其他类似的组合

我在一起使用这两个搜索字符串和让雷鬼音乐工作时遇到了问题

下面是一些有效代码的示例:

 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;
   }
my@匹配;
而(){
#推送@matches,$\uIf/\Q$wanted\E.*\Q$prefix\E/x;
#推送@matches,$\uIf/\Q^*(.*)$wanted\s*(.*)\E.*\Q^*(.*)$prefix\s*(.*)\E/x;
推送@matches,$\uIf/\Q$通缉\E/x;
}
我真正想做的是另一个被注释掉的选项。我认为我没有将两个搜索正确地连接到一个字符串中

提前感谢您的帮助。

听起来像是您想要的

push @matches, $_ if /\Q$wanted\E/ and /\Q$prefix\E/;
演示:

$perl-ne'使用严格;使用警告;使用变量qw($wanted$prefix@matches);
>开始{$wanted=“/donate”;$prefix=“lghfound”}
>推送@matches、$\uIf/\Q$wanted\E/和/\Q$prefix\E/;打印@matches'http://lghfoundation.com/pages/donate.html
> http://example.com
>这里
http://lghfoundation.com/pages/donate.html
http://lghfoundation.com/pages/donate.html

不确定你在问什么。请提供一些预期输出的示例
$wanted
中有什么?
$prefix
中有什么内容?我是来学习的,不需要别人帮忙。当我陷入困境时,我在写脚本并寻求帮助,而不是让别人为我写脚本。你认为我应该使用什么好书或在线资源,这样我才能变得更好?我只是想变得更好,学习。@tialin:正如我所说的,你忽略了所有的建议,似乎在代码的各个部分进行修补,希望有什么东西能起作用。没有人愿意提供更多的建议,只是为了被忽视。在internet上搜索Perl教程非常简单。如果您阅读它们并在一两年内每天正确回答几个关于堆栈溢出的Perl问题,那么您就可以称自己为精通了。@Borodin这比上一个问题要好得多,因为它的重点相当集中。不一定关注问题的正确方面,但仍然——更好。感谢指向前面线程的指针。我仍然存在的问题是,这个正则表达式“push(at)匹配,$\uif/\Q$prefix\E.*\Q$wanted\E/x;”仍然没有从我的文件“lghfoundation.com/genate/john hansen.aspx”中提取这一行;其中$wanted=“/generate”和$prefix=“lghfound”&我正试图找出原因。正则表达式“push@matches、$\uif/\Q$wanted\E/和/\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