String 在perl中使用正则表达式从一个字符串中提取多个类似的模式字符串

String 在perl中使用正则表达式从一个字符串中提取多个类似的模式字符串,string,perl,extract,String,Perl,Extract,需要您的帮助吗?如何在Perl中使用正则表达式从一个字符串中提取多个类似的字符串 这是源字符串: 星期六2013年2月16日23:56:30 ICT-乌兰321西南大丹投诉无法接入互联网HP:Samsung galaxy S3优惠:优惠和VAS活动类型自到期日起保持活动更多AOU MDS PDMA_前/后数据500MB_30D常规SOC 2/16/2013 4:19:29下午0 AOU MDS PDMA_前/后数据500MB_30DAOU MDS PDMA前/后数据1.2GB\u 30D定期SO

需要您的帮助吗?如何在Perl中使用正则表达式从一个字符串中提取多个类似的字符串

这是源字符串:

星期六2013年2月16日23:56:30 ICT-乌兰321西南大丹投诉无法接入互联网HP:Samsung galaxy S3优惠:优惠和VAS活动类型自到期日起保持活动更多AOU MDS PDMA_前/后数据500MB_30D常规SOC 2/16/2013 4:19:29下午0 AOU MDS PDMA_前/后数据500MB_30DAOU MDS PDMA前/后数据1.2GB\u 30D定期SOC 2/16/2013 11:47:05 PM0 AOU MDS PDMA前/后数据1.2GB\u 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

期待指导人员

尝试循环和
g
标志:

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