Регэкспы в Perl: секреты

2009-03-31T16:43:00+07:00

Засел сегодня за perl, причём с твёрдым намерением разобраться в регэкспах.
Пока что сама программа продвигается медленно (хотя уже не выдаёт ошибок деления на 0), но я уже раскопал интересные секреты регэкспов Перла. Коими и спешу поделиться.
Информация редкая, такое не в каждом учебнике найдёшь.


КонструкцияЗначение
/xИнструкция в конце regexp’а разрешает использование разнообразных пробелов,а также комментов. ОЧЕНЬ РЕКОМЕНДУЮ к использованию: читабельность регэкспа повышается в разы, когда вы разбираете его по кусочкам.Естественно,что пробелы и “диезы” с использованием этого указания надо отделять слешем, если вы хотите их использовать по прямому назначению.
/mРассматривать переменную как многострочную. ^ и $ отвечают не за начало и конец строки,а за начало и конец любой строки параграфа.
/sРассматривать переменную как однострочную - . будет отвечать даже символу \n,который обычно она игнорирует.
(?#…)Помечает подстроку как коммент, в отличие от обычного #,который помечает весь остаток строки.Работает только при наличии инструкции /x.
?{CODE}Выполнить код внутри регэкспа (!!!). Код не интерполируется.
(FAIL)Конструкция автоматически заставляет отвергнуть любые совпадения регэкспа.
(ACCEPT)Обратно: автоматически утверждает совпадение регэкспа, дальше выражение не проверяется.
(MARK:name)Ставит метку name в строке на текущей позиции
(SKIP:name)отменяет все совпадения вплоть до метки name
\KНе учитывать текст,совпавший до этого,в результате регэкспа.


Многие из этого были введены именно в 5.10, поэтому не указаны даже в perlre.
Удачи в использовании!