Регулярные выражения
Регулярные выражения представляют собой средства для
поиска и обработки строк по шаблонам. Любое регулярное выражение
представляет собой набор цифр, букв, знаков и символов-шаблонов, описывающих искомое выражение.
Символы-шаблоны заменяют один или более обычных символов. Например, такой
символ-шаблон . обозначает любой символ. Вот список
символов-шаблонов с описанием:
- .(точка) - обозначает любой символ, кроме "\n".
- \w - обозначает любой алфавитно-цифровой символ и символ "_".
- \W - обозначает любой не алфавитно-цифровой символ и не символ "_".
- \s - обозначает символ пробела.
- \S - обозначает любой символ, кроме символа пробела.
- \d - обозначает любой цифровой символ.
- \D - обозначает любой не цифровой символ.
- [ ] - обозначает любой символ из
перечисленных в скобках.
[a-zA-Z] - любой символ от a до z и от A до Z.
[12gh] - "1", "2", "g" или "h".
- ( ) - с помощью скобок символы-шаблоны можно
группировать.
- \l - переводит следующий символ в нижний
регистр.
- \u - переводит следующий символ в верхний
регистр.
\lWe\uk\lq - строка "weKq".
\lu\lU\ld\lQ\ug\uq. - строка "uudqGQ".
- \Lсимволы\E - переводит в нижний регистр набор символов, начиная с
\L и заканчивая \E.
- \Uсимволы\E - переводит в верхний регистр набор символов, начиная с
\U и заканчивая \E ( кстати говоря, при нормально настроенной локали
Perl прекрасно переводит и в верхний и в нижний регистры русские буквы ).
\LTrjKLf\E - строка "trjklf".
\UghJtRes\E. - строка "GHJTRES".
- \Qсимволы\E - начиная с \Q и заканчивая \E символы-шаблоны не
действуют.
\Q\We\uk\l\E - строка "\We\uk\l".
- ^ - данный символ-шаблон показывает, что искомое выражение должно
находиться в начале строки.
- $ - этот символ-шаблон показывает,
что искомое выражение должно находиться в конце строки или перед символом "\n"
для многострочного текста.
- \b - обозначает, что искомое выражение находиться в начале слова.
- \B - обозначает, что искомое выражение находиться не в начале
слова.
- \A - эквивалент "^".
- \Z - эквивалент "$".
- \z - означает, что искомое выражение находиться в конце
многострочного текста
Как ты заметил, символы-шаблоны \w,\W,\d,\D,\s,\S,[
],.(точка) обозначают только один символ. Для обозначения нескольких
подряд идущих однотипных символов применяются модификаторы.
- * - обозначает, что символ повторяется 0 и более раз.
- + - обозначает, что символ повторяется 1 и более раз.
- ? - символ повторяется 0 или 1 раз.
- {N} - символ повторяется N раз.
- {N,} - символ повторяется как минимум N раз.
- {N,M} - символ повторяется минимум N раз и максимум M раз.
Если ты применяешь модификаторы и хочешь ограничить их
действие на совпадение минимальной длины, используй модификатор "?".
- *? - обозначает, что символ повторяется 0 и более раз.
- +? - обозначает, что символ повторяется 1 и более раз.
- ?? - символ повторяется 0 или 1 раз.
- {N}? - символ повторяется N раз.
- {N,}? - символ повторяется как минимум N раз.
- {N,M}? - символ повторяется минимум N раз и максимум M раз.
Если не использовать "?", под действие спец. символа попадает весь набор символов,
идущих подряд и соответствующих ему, а если использовать, то под
действие символа-шаблона попадает та часть,
которая является минимальной для удовлетворения действия
шаблона.
Также в шаблонах в качестве простых символов используются
специальные символы.
- \\ -символ "\".
- \/ -символ "/".
- \" - двойная кавычка.
- \' - одинарная кавычка.
- \. - точка.
- \^ - символ "^".
- \$ - символ "$".
- \* - символ "*".
- \? - символ "?".
- \+ - символ "+".
- \{ - символ "{".
- \} - символ "}".
- \t - табуляция.
- \n - новая строка.
- \r - возврат каретки.
- \v - вертикальная табуляция.
- \f - перевод формата.
- \a - звонок.
- \e - escape.
- \0NN - восьмеричный код символа ( например \033 ).
- \xNN - шестнадцатиричный код символа ( например \x0F ).
Если данное описание тебя не
устраивает, можешь почитать описание регулярных выражений, входящее в
поставку языка Perl, набрав man perlre в коммандной
строке.