Я пытаюсь использовать preg_match, чтобы получить чье-то имя, но я не хочу, чтобы он получил свое имя, если они говорят что-то вроде «мое имя НЕ так и так ...», но у меня возникли проблемы соответствия его:Получение имени пользователя с помощью regex lookahead
$string = "my name is james";
preg_match("~my name is (?>!\bnot\b)[a-z]+~", $string, $match);
print_r($match);
Так как моя исходной строка не есть слово «не» в нем, он должен был соответствовать строке, но это не так. Что я делаю не так?
Результат:
Array()
Ожидаемый результат:
Array (мое имя Джеймс)
Исправить. '(?>! \ bnot \ b)' является [атомной группой] (http://www.regular-expressions.info/atomic.html), которая соответствует последовательности '! not'. –