вторник, марта 31, 2009

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

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


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

Комментариев нет:

Отправить комментарий

Постоянные читатели

Архив