Это моя строка .

< Сильный > Восстановление

Обновите кодеки до версии 3.6.5 или выше.

< STRONG> Ссылки

GitHub Commit

Это мой Regex:

(?=Remediation)[^\n]*[\s\S]*?(?=References|$)

Соответствие:

Исправление Обновите кодеки до версии 3.6.5 или выше.

Мне не нужен заголовок (" Исправление ") в выходных данных. Я поместил ?= в группу, но пока это не работает.

Как я мог это сделать?

1
mehdi kh2012 22 Фев 2020 в 12:43

2 ответа

Лучший ответ

В вашем паттерне вы начинаете с {{X 0}}, который является положительным прогнозным утверждением.

Один из вариантов - обновить шаблон, чтобы изменить его на позитивный. Вы можете опустить [^\n]*, так как следующий [\s\S]*? также будет соответствовать этому.

(?<=Remediation)[\s\S]*?(?=References)

Regex demo

Другой вариант - сопоставить Remedations и захватить в группе все строки, которые не начинаются с References, используя отрицательный прогноз.

\bRemediation\s*\r?\n((?:(?!References).*)+)

Regex demo

1
The fourth bird 22 Фев 2020 в 13:37
(?:Remediation\s*)([\s\S]*?)(?:\s+References)

Сделает свое дело. (? :) не захватывает. Вы также, вероятно, не хотите захватывать пробелы после исправления или перед ссылками, поэтому я добавляю \ s * в группы без захвата. демонстрация

Или, согласно комментарию, вы можете исключить синтаксис без захвата и просто сделать:

Remediation\s*([\s\S]*?)\s+References

демонстрация

Здесь вы берете группу 1

0
Barka 23 Фев 2020 в 16:30