Этот вопрос, похоже, такой же, как и Отрицательный прогноз с awk или sed невозможен, но только perl поддерживает Но это не то же самое.
В этом вопросе я хочу знать, как решить больше условий для моего поиска
У меня есть следующий текст (sample.txt)
Условие 1: содержит PQXY между QWWK и KWWQ, поэтому не требуется
QWWK erly jointure PQXY In said devonshire
Drift allow green son walls years for blush.
acceptance son KWWQ
Условие 2: QWWK не запускается в начале строки, поэтому не требуется
other QWWK get him his projection ar saw fat sudden edward
sociable felicity supplied mr. September
ay now many. Alte KWWQ
Условие 3: KWWQ находится не в конце строки, поэтому не требуется
QWWK ble formerly six but hand
r way now many. Alteration you
occasion ham for KWWQ other
Условие 4: QWWK начинается при запуске, а KWWQ заканчивается в конце, и PQXY отсутствует, поэтому это то, что нужно
QWWK n zealously arranging fr
eal park so rest we on. Ignorant d
he possession insensible sympathi KWWQ
.......
Пожалуйста, обратите внимание на слова QWWK PQXY и KWWQ
Мой текст состоит из нескольких строк.
I want to match text between QWWK and KWWQ
Condition 1: should not contain the word PQXY inbetween
Condition 2: QWWK should start at the beginning of the line
Condition 3: KWWQ should be at the end of the line
В возвышенном тексте я соответствую, используя:
(?s)(^QWWK(?:(?!QWWK).)*?KWWQ\n)
и соответствует условию 4
QWWK n zealously arranging fr
eal park so rest we on. Ignorant d
he possession insensible sympathi KWWQ
Таким образом, оно не соответствует условию 1, условию 2 и условию 3.
Я пытаюсь с помощью perl заменить условие 4 некоторым текстом, который я пытаюсь
$ perl -0777pe 's/^QWWK(?!QWWK).*?KWWQ\n/sometext/gs' sample.txt > sample_mod.txt
Но sample_mod.txt не заменил кодировку 4
я тоже пробовал
$ perl -0777pe 's/\nQWWK(?!QWWK).*?KWWQ\n/sometext/gs' sample.txt > sample_mod.txt
Удаляет как условие 1, так и условие4