Рассмотрим многострочную строку, состоящую из N lines
, например:
Line 1 text
Line 2 text
Line 3 text
...
Line n-1 text
Line n text
anchor=value
Line n+2 text
Line n+3 text
Line n+4 text
...
Line N text
Клавиша anchor
не отображается ни в одной из строк, и могут быть пробелы перед якорем, а также вокруг знака =
, следующего за ним.
Мне нужно регулярное выражение, которое разбивает указанную выше строку на 3 группы:
- Строка 1 до строки n (включительно)
- Линия привязки (точка раздела)
- Линия n+2 до линии N (включительно)
Самое близкое, что я получил к решению, это
(?s)^(?:(?!anchor\s*=\s*).)+?\r|\nanchor\s*=\s*([^\r\n]+)(?:\r|\n)(.*)
но приведенное выше регулярное выражение включает весь текст в первую соответствующую группу и заполняет оставшиеся 2 группы, как и ожидалось.
Дополнительным требованием является то, что регулярное выражение должно быть максимально быстрым, поскольку оно будет применяться к большим объемам данных. Также обратите внимание, что обработка с помощью одного регулярного выражения является единственным вариантом в этом случае использования.
Любые идеи?