Почему не работает $ в регулярном выражение после lookahead'а?

Привет,
Не могу понять почему не работает $ в следующей ситуации.
Есть текст
123_456
123_456789
, нужо выцепить 123 убедившись, что присутствует _456 и это всё на одной строке.
Для этого я использую следующее регулярное выражение:
^123(?=_456)$

Но оно не работает при наличии $. Почему?
  • Вопрос задан
  • 80 просмотров
Решения вопроса 1
saboteur_kiev
@saboteur_kiev
software engineer
lookahead не является набором символом, он является "якорем", который обозначает позицию.
То есть у вас выходит, что на одной и той же позиции должны быть _456 и $, поэтому и не работает

Добавьте конец строки внутрь вашего lookahead
^123(?=_456$)
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 1
@cicatrix
было бы большой ошибкой думать
У вас текст однострочный или многострочный?

Попробуйте в разных режимах:
Параметры регулярных выражений

Multiline (?m) Использовать многострочный режим, где ^ и $ соответствуют началу и концу строки текста (а не началу и концу входной строки).

Singleline (?s) Использовать однострочный режим, где точка (.) соответствует любому символу (а не каждому) символу, кроме \n).
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы