perl正则表达式怎么匹配多行?
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了perl正则表达式怎么匹配多行?相关的知识,希望对你有一定的参考价值。
Administrative Contact, Technical Contact:
Openfind Informaiton Technology Inc. mis@OPENFIND.COM.TW
4F, 222, Nan-Chang Rd. Sec. 2
Taipei, Taipei
TW
886-2-23697575~140 fax: 886-2-23648738
Record expires on 19-Jan-2014.
Record created on 20-Jan-1998.
Database last updated on 29-Oct-2013 08:13:04 EDT.
Domain servers in listed order:
上面是我定义的@domain_data
我需要输出mis@OPENFIND.COM.TW
不能用循环打开数组啊,那是一行一行的不能匹配换行符
我的程式基本是这样的
while (<@domain_data>)
if (/Administrative Contact, Technical Contact:\n(.*)\s+(.*)\n/)
$domain_mail=$1;
print "$domain_mail";
如果内容在文件中,那么这样读文件就可以把文件读到一个标量中:
local $/;my $data = <FH>;
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;
本回答被提问者采纳 参考技术B 在正则末尾加个m标记,可以用$匹配行尾
if (/Administrative Contact, Technical Contact:$(.*)\s+(.*)$/m)
只保证正则的正确,没学过perl,不能保证代码的正确
如果原来的代码是正确的,应该能成 参考技术C open F,"F:/1.txt"; #1.txt是你画面上的文件
while(<F>)
$line=<F>;
if(/Administrative/)
$line=~/Openfind Informaiton Technology Inc.\\s+(.*)/;
print $1;
以上是关于perl正则表达式怎么匹配多行?的主要内容,如果未能解决你的问题,请参考以下文章