Синтаксически регулярные выражения записываются между двух слешей:
/рег_выражение/
Ниже приведены два примера: сначала совсем простой, а затем сложнее:
if (/abc/) {
print "$_ содержит abc\n"};
if (/(ftp|http):\/\/([^\/]+)(.*)/) {
print "Протокол $1\n";
print "Сервер $2\n";
print "Документ $3\n"; }
В следующей таблице приведены основные правила построения регулярных выражений:
Конструкция |
Значение |
Пример использования |
| . | Соответствует любому символу | /ab.c/ |
| [мн-во символов] | Соответствует любому символу из данного множества | /[abc]d/ |
| [^мн-во] | Отрицание множества символов | /[^xyz]/- соответствует всему, что не содержит x, y, и z |
| (...) | Группировка элементов с их запоминанием в переменных $1, $2, $3 и т. д. | /(xyz)*//([ab.c]) |
| (...|...|...) | Одна из альтернатив | /(ftp|http)/ |
| * | Повторение образца 0 или более раз | (.*) - соответствует всему |
| ? | Повторение 0 или 1 раз | /(http:\/\/)?.*/ |
| + | Повторение 1 или более раз | |
| {n,m} | Повторение от n до m раз | |
| {n} | Повторение ровно n раз | |
| {n,} | Повторение n и более раз | |
| ^ | Соответствует началу строки | /^http:/ |
| $ | Соответствует концу строки | /.cgi$/ |
В следующей таблице приведены обозначения различных специальных символов в регулярных выражениях.
Символ |
Значение |
| \t \r \n | Управляющие символы: табуляция, возврат каретки, перевод строки. |
| \d | Соответствует цифре, аналог [0..9] |
| \D | Соответствует нецифровому символу, аналог ^[0..9] |
| \w | Соответствует букве |
| \W | Соответствует небуквенному символу. Аналог ^/w |
| \s | Соответствует пробельному символу (пробел, табуляция, новая строка). |
| \S | Соответствует непробельному символу |
| \b | Соответствует границе слова |
| \B | Соответствует не границе слова. |