用一个 Loop 把每一行个别抓出来处理
只要有抓到 AAA 就再检查该行有没有 B 和 C
没有的话就直接在这一次 loop 抓出下一行出来处理
这样应该就行囉
※ 引述《cvhill (NO more mistake)》之铭言:
: 大家好 我是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
: ^^^^^ ^^^^^^^^^^
: 第一行的头 第二行的尾
: 有高手可以指导一下该怎么写吗? 谢谢