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

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

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

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

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

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

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

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

Войти через TM ID
Похожие вопросы
14 авг. 2018, в 22:43
350 руб./за проект
14 авг. 2018, в 19:03
10000 руб./за проект
14 авг. 2018, в 18:10
1000 руб./в час