需要您的帮助,如何使用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
期待指导人员
答案 0 :(得分:0)
尝试循环和g
标志:
while ($string =~ /REGEX-HERE/g)
{
print "$2 $3\n";
}