[问题] 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