#regex #perl
#регулярное выражение #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
Это только сопоставление и замена при первом совпадении: ТИП ОЧЕРЕДИ (DLR_BRKR_TIXX_IN_PROD) (QLOCAL) CURDEPTH(0).
Я упускаю что-то очень очевидное?
Спасибо.
Комментарии:
1. вы всегда должны включать предупреждение при разработке кода на Perl.
Ответ №1:
Я думаю, вы обнаружите, что на самом деле оно совпадает с первого по последнее совпадение за один раз, потому что .*
оно жадное.
Попробуйте
s/QUEUE(([^)]*)).*?CURDEPTH((d ))/1:2/g
вместо этого.
Комментарии:
1. Ты опередил меня на несколько секунд:-( , 1.
2. sunofa. Я попробовал не жадное сопоставление, но в другом месте. Спасибо!