2013-02-22 46 views
0

需要你們的幫助如何從Perl中提取不止一個類似的模式串

使用正則表達式的一個字符串中提取超過一個類似的字符串這是源字符串:

Sat Feb 16 23:56:30 ICT 2013 - wulan321〜swdadad抱怨不能訪問互聯網惠普:三星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 Regu LAR SOC 2013年2月16日下午11時47分05秒 0 AO_MDS_PDMA_Pre/Post_Data1.2GB_30D CM:REFF gpnblo APN:實習生等用戶名:dikosongkan paswword: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 

展望爲指導傢伙

回答

0

嘗試循環和g標誌:

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

你好perreal,它的工作原理。謝謝。 – user2098024 2013-02-22 06:54:30