perl正则表达式怎么匹配多行?

2025-04-28 11:24:32
推荐回答(3个)
回答1:

如果内容在文件中,那么这样读文件就可以把文件读到一个标量中:

local $/;
my $data = ;
print $1 if $data =~ /Administrative Contact, Technical Contact:\n.+\s+(\S+\@\S+)\n/;

如果内容在数组中,那么:

for (my $i = 0; $i < @data; $i++) {
    if ($i > 0 and $data[$i-1] =~ /Administrative Contact, Technical Contact:$/ and $data[$i] =~ /\s+(\S+\@\S+)$)/) {
        print $1;
        last;
    }
}

回答2:

在正则末尾加个m标记,可以用$匹配行尾

if (/Administrative Contact, Technical Contact:$(.*)\s+(.*)$/m)
只保证正则的正确,没学过perl,不能保证代码的正确
如果原来的代码是正确的,应该能成

回答3:

open F,"F:/1.txt"; #1.txt是你画面上的文件
while(){
$line=;
if(/Administrative/){
$line=~/Openfind Informaiton Technology Inc.\s+(.*)/;
print $1;}}