Regex с Lookahead не соответствует последнему результату ⇐ Php

Кемеровские программисты php общаются здесь
Anonymous
Regex с Lookahead не соответствует последнему результату

Сообщение Anonymous »

Посмотрите на эту довольно простой REGEX по адресу https://regex101.com/r/jt7kgw/1
Я хочу сопоставить всю строку, которая начинается с буквы Q и получить все после буквы Q , но она не может содержать XXX . Я придумал эту форму, которая отлично работает: < /p>

Код: Выделить всё

/q(.+?)(?=xxx)/
Если я тестирует эту переоборудование с помощью строки Q111xxxx Q222xxx Q333xxx Я вернусь 111 , 222 и 333 (как вы можете увидеть в ссылке выше). Однако, если входной строкой является Q111xxxx Q2222XXX Q333 (я удалил последний XXX ) Я вернусь только 111 и 222 , но мне действительно нужен последний матч (который является 333 ). https://regex101.com/r/7syo4x/1
q(?:(?:.+?)(?=xxx)|.+$)
< /code>
, что очень уродливо и не эффективно. Есть ли лучший способ сделать это?

Подробнее здесь: https://stackoverflow.com/questions/795 ... ast-result

Вернуться в «Php»