Regex работает в инструменте Regexr, но не в PHP - PullRequest
0 голосов
/ 16 января 2019

Моя цель - извлечь псевдоним из предложения объединения.

Вот мой RegEx: /(.*)rqd_evenements (?:as )([a-z_\-A-Z]+)(.*)/i

Пример строки:

СЛЕДУЮЩАЯ ПРИСОЕДИНЕНИЕ post_id = ID

Я делаю preg_replace:

preg_replace($regex, '$2', $sample_string);

В результате:

СЛЕДУЮЩЕЕ СОЕДИНЕНИЕ

Ожидаемый результат: ev

Что меня удивляет, так это то, что он работает в RegExr: https://regexr.com/46hil

1 Ответ

0 голосов
/ 16 января 2019

Вам не нужны все эти группы захвата.

/rqd_evenements (?:as )?\K[\w-]+/i

Если вы просто хотите извлечь подстроку, используйте preg_match () для доступа к элементу [0].

Возможноваш шаблон не работает с вашей строкой запроса в реальном времени, потому что у вас есть символы новой строки, которые не соответствуют метасимволу точкиs флаг может это исправить.


С preg_replace:

/.*rqd_evenements (?:as )?([\w-]+).*/is

Заменить на $1.

...