[問題] perl 跨行比對的問題

作者: cvhill (NO more mistake)   2013-06-02 12:31:48
大家好 我是perl新手
想請教一下perl的跨行取代要如何重複執行
我寫出來的都會直接取代第一個和最後一個case
舉例來說
我有一個檔案形式是
1.AAAxxxxB=XXXxxx
xxxC=YYY
2.AAAxx
xB=ZZZxxxxxxxxxC=HHH
(x是不要的東西且x有可能跨行)
我想要抓出
1.AAA B=XXX C=YYY
2.AAA B=ZZZ C=HHH
所以我perl寫的是
$_=~ s/AAA.*B=(\S+).*C=(\S+)/AAA B=$1 C=$2/gs;
print $_ . "\n";
結果他只能出現一行
1.AAA B=ZZZ C=HHH
^^^^^ ^^^^^^^^^^
第一行的頭 第二行的尾
有高手可以指導一下該怎麼寫嗎? 謝謝
作者: CCWck (幹嘛要暱稱)   2013-06-02 13:19:00
可以的話 .*看能不能換成[a-zA-Z0-9]+之類的
作者: scwg ( )   2013-06-02 14:03:00
應該是 .* 太貪心的問題? 兩個 .* 都改成 .*? 試試看
作者: cvhill (NO more mistake)   2013-06-02 15:34:00
感謝兩位! 第二位正解 原來*後還可以加? THS

Links booklink

Contact Us: admin [ a t ] ucptt.com