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"; 展开
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"; 展开
3个回答
展开全部
如果内容在文件中,那么这样读文件就可以把文件读到一个标量中:
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;
}
}
本回答被提问者采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
在正则末尾加个m标记,可以用$匹配行尾
if (/Administrative Contact, Technical Contact:$(.*)\s+(.*)$/m)
只保证正则的正确,没学过perl,不能保证代码的正确
如果原来的代码是正确的,应该能成
if (/Administrative Contact, Technical Contact:$(.*)\s+(.*)$/m)
只保证正则的正确,没学过perl,不能保证代码的正确
如果原来的代码是正确的,应该能成
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
open F,"F:/1.txt"; #1.txt是你画面上的文件
while(<F>){
$line=<F>;
if(/Administrative/){
$line=~/Openfind Informaiton Technology Inc.\s+(.*)/;
print $1;}}
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询