если у меня есть ввод с новыми строками, например:
[INFO]
xyz
[INFO]
Как я могу вытащить часть xyz, используя привязки $
? Я попробовал такой шаблон, как /^\[INFO\]$(.*?)$\[INFO\]/ms
, но perl дает мне:
Use of uninitialized value $\ in regexp compilation at scripts\t.pl line 6.
Есть ли способ отключить интерполяцию, чтобы якоря работали должным образом?
РЕДАКТИРОВАТЬ: Ключевым моментом является то, что якорь конца строки представляет собой знак доллара, но иногда может быть необходимо вставлять якорь конца строки в шаблон. Если шаблон интерполируется, у вас могут возникнуть проблемы, такие как неинициализированный $\
. Например, приемлемым решением здесь является /^\[INFO\]\s*^(.*?)\s*^\[INFO\]/ms
, но оно не решает сути первой проблемы. Я изменил якоря на ^
, поэтому интерполяции не происходит, и с этим вводом я могу это сделать. Но что делать, если я действительно хочу сослаться на EOL с помощью $
в своем шаблоне? Как заставить регулярное выражение компилироваться?