Я пытаюсь использовать регулярное выражение NP ++ для анализа данных из файла с входными данными:
badstring ---
useless data
keyword1 ---
usless data
string 1 ---
random number of useless lines of characters across newlines
string 2 ---
more useless stuff
keyword2 ---
useless data
dumb badstring keyword2 ---
output:
string 1, string 2
Например, sake, string1, string 2 и badstringsвсе они имеют одинаковый формат, поэтому я исключительно хочу найти строку1 и строку2 ТОЛЬКО между ключевым словом1 и ключевым словом 2.
Самое близкое, что мне удалось получить:
keyword1\r\n((.|\r\n)+?)\r\n(.+) ---\r\n((.|\r\n)+?)\r\n(.+) ---\r\n((.|\r\n)+?)keyword2
проблема в том, чтоЯ не знаю, сколько строк мне нужно перехватить, поэтому мне нужно рекурсивно искать по наибольшему количеству возможных строк, и потому что я использую ((. | \ R \ n) +?), Чтобы сопоставить все, что всегда соответствует, кромеключевое слово, поэтому, когда я запускаю keyword1 ---((.|\r\n)+?)(.+) ---((.|\r\n)+?)(.+) ---((.|\r\n)+?)(.+) ---((.|\r\n)+?)keyword2 ---
, чтобы найти 3 строки, он выбирает за пределами ключевого слова2, потому что следующий раздел также содержит ключевое слово2 вместо возврата без совпадений. Точно так же, если я делаю это, ища слишком много строк, он будет зацикливаться и выбирать весь файл. Есть идеи?