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

AdministrativeContact,TechnicalContact:OpenfindInformaitonTechnologyInc.mis@OPENFIND.... 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";
展开
 我来答
kurri
2013-10-30 · 超过18用户采纳过TA的回答
知道答主
回答量:80
采纳率:100%
帮助的人:50.8万
展开全部

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

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;
    }
}
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
albumin
2013-10-29 · TA获得超过1.2万个赞
知道大有可为答主
回答量:4889
采纳率:87%
帮助的人:2392万
展开全部
在正则末尾加个m标记,可以用$匹配行尾

if (/Administrative Contact, Technical Contact:$(.*)\s+(.*)$/m)
只保证正则的正确,没学过perl,不能保证代码的正确
如果原来的代码是正确的,应该能成
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
76de1
2013-10-30 · TA获得超过1158个赞
知道小有建树答主
回答量:666
采纳率:100%
帮助的人:494万
展开全部
open F,"F:/1.txt"; #1.txt是你画面上的文件
while(<F>){
$line=<F>;
if(/Administrative/){
$line=~/Openfind Informaiton Technology Inc.\s+(.*)/;
print $1;}}
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(1)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式