Многострочный PCRE, несколько условий - PullRequest
1 голос
/ 28 марта 2020

только что начал с регулярного выражения и столкнулся с камнем преткновения. Надеясь, что кто-то сможет объяснить обходной путь.

Попытка выполнить многострочный поиск. sh Я бы использовал «*» в качестве «флага», так сказать: если строка содержит звездочку, она должна совпадать. Должны быть выведены цифры в начале строки, так же как и слово «Соответствие» в связанном примере, исключая саму звездочку.

Я предполагаю, что я использую "|" делит регулярное выражение на два условия, когда оно фактически должно удовлетворять обоим условиям.

https://regex101.com/r/Pu56bi/2

(?m)(^\d+)|(?<=\*).*$

Любая помощь приветствуется.

Ответы [ 2 ]

0 голосов
/ 28 марта 2020

Если Match всегда находится в конце строки, вы можете сопоставить цифры в начале строки, а затем сопоставить * и Match в конце строки.

Используйте границу слова \b, чтобы слово из цифр не входило в более длинное слово.

^(\d+)\b.*\*.*\b(Match)$

Демонстрация регулярных выражений

Если проверка возможна после слово Match вы можете утверждать *, используя позитивный взгляд.

^(?=.*\*)(\d+)\b.*\b(Match)\b.*$

Regex demo

0 голосов
/ 28 марта 2020

Вы можете использовать поз. смотрите как в

^(?=.*?\*)(\d+).+?(Match)$

См. ваш модифицированный пример на regex101.com .

...