0

Perl で Regex を使用して 1 つの文字列から複数の類似した文字列を抽出する方法を教えてください。

これはソース文字列です:

Sat Feb 16 23:56:30 ICT 2013 - wulan321~ sw ダダンがインターネットにアクセスできないと文句を言う HP : Samsung 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 パスワード 完了: 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 に答える