使用perl中的regex从一个字符串中提取多个类似的模式字符串

时间:2013-02-22 04:33:10

标签: string perl extract

需要您的帮助,如何使用Perl中的Regex从一个字符串中提取多个类似的字符串

这是源字符串:

  

周二2月16日23:56:30 ICT 2013 - wulan321~sw dadan抱怨无法访问互联网惠普:三星Galaxy S3优惠:优惠和增值活跃类型有效期自剩余期限更长 AO_MDS_PDMA_Pre / Post_Data500MB_30D常规SOC 2 / 16/2013 4:19:29 PM 0 AO_MDS_PDMA_Pre / Post_Data500MB_30D AO_MDS_PDMA_Pre / Post_Data1.2GB_30D常规SOC 2/16/2013 11:47:05 PM 0 AO_MDS_PDMA_Pre / Post_Data1.2GB_30D CM: reff gpnblo apn:intern et username:dikosongkan paswword:dikosongkan done

我的输出预期是:

AO_MDS_PDMA_Pre/Post_Data500MB_30D 2/16/2013 4:19:29 PM
AO_MDS_PDMA_Pre/Post_Data1.2GB_30D 2/16/2013 11:47:05 PM

我已经用perl完成了一些工作:

if ($string =~ /([Additional.*|A ?O.*])+(AO_.+?)+[\t*?| *?]Regular SOC[\t*?| *?](.+?[A|P] ?M)/) 
{
    print "$2 $3\n";
}

但是输出只捕获了第一个出现的字符串:

AO_MDS_PDMA_Pre/Post_Data500MB_30D 2/16/2013 4:19:29 PM

期待指导人员

1 个答案:

答案 0 :(得分:0)

尝试循环和g标志:

while ($string =~ /REGEX-HERE/g) 
{
    print "$2 $3\n";
}