Я пытаюсь найти все между двумя словами (не буду говорить, какие два слова, потому что я не хочу, чтобы люди кричали, что вы не можете разобрать x с помощью регулярных выражений, вместо этого используйте анализатор x). У меня нет проблем с поиском начального и конечного слов, за исключением того, что конечное слово встречается не первым.
Я использую что-то вроде: startword((.*\n)*)endword
Это не так плохо, как опустить конечное слово, которое затем соответствует концу документа. Однако это не то, что мне нужно.
Я прочитал бесчисленное количество статей, в которых говорится, что мне нужен нежадный или ленивый поиск, который следует включить, поместив ? после **. Когда я пробую это в KATE, ничего не совпадает (startword((.*\n)*?)endword
).
Меня также озадачивает другое поведение: у меня есть текст, в котором встречается endword\n\s**endword, но когда я использую его для завершения совпадения, он также терпит неудачу. Однако совпадение endword\n\s*endword само по себе работает так, как ожидалось.
Есть ли способ сделать ленивые регулярные выражения в KATE или кто-нибудь может предложить другое решение?
Спасибо.
startword([^e]*(?:e(?!ndword)[^e]*)*)endword
(демонстрация) - person Wiktor Stribiżew   schedule 16.07.2020