♦ Проверить, соответствует ли вся строка целиком заданному шаблону
♦ Найти в строке подстроку, удовлетворяющую заданному шаблону
♦ Извлечь из строки подстроки, соответствующие заданному шаблону
Более подробную информацию можно получить в книге Джефри Фридла (Jeffry Friedl) «Mastering Regular Expressions», O'Reilly.1
Базовый синтаксис
Следующее регулярное выражение соответствует любой строке, содержащей подстроку «xyz»:
"xyz"
В регулярном выражении может быть несколько ветвей (branches). Ветви разделяются символом ], действующим как оператор OR. Иными словами, достаточно, чтобы только одна из ветвей соответствовала целевой строке:
"abc|xyz"
Любая строка, содержащая abc или xyz, будет считаться соответствующей приведенному выше регулярному выражению. Ветвь состоит из одной или нескольких частей (pieces).
Вот пример выражения в квадратных скобках (bracket expression): "[xyz]"
Квадратные скобки ограничивают поиск теми символами, которые в них заключены. Поэтому данное регулярное выражение будет соответствовать любой строке, содержащей какой-либо из символов у или z или все эти символы. Соответствие фиксируется, если совпадает хотя бы один символ.
Следующее регулярное выражение соответствует только цифрам: "[0123456789]"
Такая запись допустима, но утомительна. Вот более короткий способ записать то же самое:
"[0-9]"
Это выражение тоже соответствует любой цифре. Любые два символа, разделенные дефисом (-), задают соответствие целому диапазону символов, находящихся между ними. Также как "[0-9] соответствует любой цифре, выражение " [ a-Z]" соответствует любому символу от а на нижнем регистре до Хна верхнем. Некоторые настаивают, что лучше записывать то же самое в виде "[a-zA-Z]". Если требуется включить в регулярное выражение дефис или пробел, то это можно сделать сразу после диапазона:
"[a-Z ■-]■'
Такое регулярное выражение должно успешно проверять правильность имен.
Для того чтобы исключить ряд символов (группу или последовательность) из поиска, в начале диапазона ставится символ ":
■Txyz]"
Регулярное выражение "[~xyz]" соответствует любому символу, кроме х, у или z. Поэтому строка axyz соответствует данному выражению. Обратите внимание, что символ " находится внутри скобок, а не снаружи; в последнем случае смысл его был бы совсем иным, что будет показано ниже.