Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/swift/19.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
String 搜索多个字符串_String_Perl_Search_Replace - Fatal编程技术网

String 搜索多个字符串

String 搜索多个字符串,string,perl,search,replace,String,Perl,Search,Replace,如何从字符串集进行搜索 我想要一个perl脚本来搜索aaa、bbb、ccc和ddd 从txt文件中搜索 例1 some random text blah blah blah //Car/trunk/sandbox/users/Tom/xyz/bbb/toyota 期望输出: //Car/trunk/sandbox/users/Tom/xyz/... //Car/trunk/sandbox/users/Alex/abc/defg/... 例2 some random text blah b

如何从字符串集进行搜索

我想要一个perl脚本来搜索aaa、bbb、ccc和ddd

从txt文件中搜索

例1

some random text
blah
blah 
blah
//Car/trunk/sandbox/users/Tom/xyz/bbb/toyota
期望输出:

//Car/trunk/sandbox/users/Tom/xyz/...
//Car/trunk/sandbox/users/Alex/abc/defg/...
例2

some random text
blah
blah 
blah
//Car/trunk/sandbox/users/Alex/abc/defg/ddd/honda/accord
期望输出:

//Car/trunk/sandbox/users/Tom/xyz/...
//Car/trunk/sandbox/users/Alex/abc/defg/...
基本上,它从aaa、bbb、ccc、ddd中给定的字符串集进行搜索,在示例1中找到bbb,并使用前面的所有内容添加反斜杠

请注意,它是从一个文本文件读取的,示例1是文本文件的示例,示例2也是如此

到目前为止,这就是我所拥有的

my $infile = 'new5.txt';
    my @strings  = qw/aaa bbb ccc ddd/;
    local @ARGV = ($infile);
    while( <> ){

        print;
    }

到目前为止,你所拥有的代码就是我所说的一种对文件进行分类的黑客方式。 首先,我们将排除必要的杂注:

use strict;
use warnings;
use autodie;
最后一种方法确保在找不到文件或无法打开文件时脚本终止。 您正确初始化了$infle和@strings,很好

打开和循环文件内容的正确或更为公认的方法是:

open(my $FILE, "<", $infile);
while(my $line = <$FILE>) {
   chomp $line;
   ...
}
close($FILE);
在这个循环中,您希望进行匹配。如果需要,请打印出所需内容并转到文件的下一行。查看perlre手册页,了解after=~的功能:

if ($line =~ m#/$elem/#) {
    print SOMETHING;
    next;
}
那会是什么?根据perlvar手册页,“在其他助记符中,`$``是包含匹配字符串之前的字符串的变量:

print $`."/...\n";

把它们放在一起,你就有了你的脚本。

你要匹配的字符串必须在斜杠内吗,例如…。/aaa/。。应该匹配但不匹配../aaardvark/。?Perl有很好的文档。从这里开始:必须在斜线内../aaa/,抱歉忘了提及。伟人,谢谢你的帮助!成功了。很好的解释: