2011-06-10 6 views
2

한 줄의 텍스트에서 여러 대체를 수행하려고하는데 작동하지 않는 것 같습니다. 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

Perl 코드를 개발할 때 항상 경고를 활성화해야합니다. – tadmc

답변

4

.*은 욕심이 많으므로 한 번에 첫 경기부터 마지막 ​​경기까지 실제로 일치하는 것으로 나타납니다.

대신

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

보십시오.

+1

당신은 초 동안 나를 때려 :-(, +1 – Toto

+0

나도. 한숨, +1 –

+0

sunofa. 나는 욕심없는 일치를 시도했지만 다른 위치에있다. 고마워! – DaveOfTheDogs

관련 문제