在Perl正则表达式中没有得到多个替换

时间:2011-06-10 14:30:13

标签: regex perl

我正在尝试在单行文本上执行多个替换,但它似乎没有工作。

QUEUE(DLR_BRKR_TIXX_IN_PROD) TYPE(QLOCAL) CURDEPTH(0) QUEUE(DLR_BRKR_TIXX_OUT_PROD) TYPE(QLOCAL) CURDEPTH(0) QUEUE(TKT_BRKR_TIXX_IN_2) TYPE(QLOCAL) CURDEPTH(0) QUEUE(TKT_BRKR_TIXX_OUT_2) TYPE(QLOCAL) CURDEPTH(0)

Regex: s/QUEUE\(([^)]*)\).*CURDEPTH\((\d+)\)/\1:\2/g

这只匹配并替换第一场比赛:QUEUE(DLR_BRKR_TIXX_IN_PROD)TYPE(QLOCAL)CURDEPTH(0)。

我错过了一些非常明显的东西吗?

感谢。

1 个答案:

答案 0 :(得分:4)

我认为你会发现它实际上是从第一场比赛到最后一场比赛,因为.*是贪婪的。

尝试

s/QUEUE\(([^)]*)\).*?CURDEPTH\((\d+)\)/\1:\2/g

代替。