Regex глобальный захват групп, которому предшествует ключевое слово - PullRequest
1 голос
/ 26 апреля 2019

Существует множество примеров захвата слова, если ему НЕ предшествует какое-либо ключевое слово.Я пытаюсь охватить все группы цифр в скобках, но только если им предшествуют слова "не выделено"

Job is not allocated to your organization (83) vs (1098), please contact support

Это строка темы.Я хочу захватить оба значения: «83» и «1098», но только в том случае, если перед любой из групп захвата появятся слова «не выделено».квантификатор нельзя использовать между наблюдателем и группой захвата: -

(?<=not allocated)?\((\d+)\)

Любая помощь очень ценится.Выражение должно быть совместимым с PCRE (PHP).

1 Ответ

0 голосов
/ 26 апреля 2019

В начале шаблона либо сопоставьте not allocated, либо сопоставьте конец предыдущего совпадения с \G.Вы также можете включить полное совпадение для подстрок с совпадающими цифрами, используя \K и предвкушение для ), что делает ненужной группу захвата:

(?:(?!^)\G|not allocated).*?\(\K\d+(?=\))

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

отрицательный прогноз для ^ необходим, чтобы гарантировать, что \G также не соответствует началу строки.

...