0

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

这是源字符串:

2 月 16 日星期六 23:56:30 ICT 2013 - wulan321~ sw dadan 抱怨无法访问互联网 HP:三星 Galaxy S3 报价:报价和 VAS 活动类型活动自到期日期剩余更多 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:实习生和用户名:dikosongkan 完成密码

我的输出期望是:

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

期待大佬指导

4

1 回答 1

0

尝试循环和g标志:

while ($string =~ /REGEX-HERE/g) 
{
    print "$2 $3\n";
}
于 2013-02-22T05:26:03.797 回答