Простейшим регулярным выражением является строка символов, обрамленная знаками "/". Например:
/Asia/
Эта означает все записи, которые содержат подстроку Asia (например, запись, содержащая Asia как часть длинной строки, подобной Asian или Pan-Asiatic).
Чтобы ограничить поиск следует использовать операторы ~(входит) и!~(не входит).
~/Asia/
ищет подстроку Asia, в то время как программа:
!~/Asia/
ищет подстроку в которой не содержится Asia.
В регулярном выражении могут использоваться метасимволы:
| Символ | Описание |
| ^ | указывает на начало строки (~ /^awk/ означает «начинается на awk») |
| $ | указывает на конец строки (~ /awk$/ означает «заканчивается на awk») |
| . | указывает на любой символ, кроме начала новой строки (~ /.wk/ может соответствовать «awk» но не «wk») |
| [] | соответствует любому из указаных в квадратных скобках символу. Если первый символ внутри скобок ^ то берутся символы НЕ указанные в квадратных скобках. Вместо перечисления символов может быть указан диапазон (например «a-c»). |
| * | Любая подстрока или её отсутствие |
| ? | Любой символ или его отсутствие |
| | | разделяет альтернативы |
| () | групирует символы (~ /(awk|Shell)/ означает либо «awk», либо «Shell») |
| + | означает что предыдущий символ или группа может повториться несколько раз (~ /(awk)+/ означает либо «awk», либо «awkawk», либо «awkawkawk» и т. д.) |
| \ | отменяет специальное значение символа, превращая его из метасимвола в обычный (~ /\^awk/ означает именно подстроку «^awk») |
Например:
/^.$/
просматривает записи для поиска записи, состоящей из одного символа.
/[a-zA-Z]/
поиск любой английской буквы
/^[0-9]+$/
Состоит только из цифр
В дополнение к распознаваемым метасимволам, awk распознает следующие последовательности языка программирования Си внутри регулярных выражений и строк:
\b – возврат
\f – перевод формата
\n – новая строка
\r – возврат каретки
\t – табуляция
\ddd – восьмиричное значение
\" – кавычки
c – любой метасимвол
\c – с
Например, выражение
/\t/
Означает поиск табуляции
Предположим, что нужно найти строку символов, подобную ^[0-9]+$. Если строка "^[0-9]+$" используется как регулярное выражение, появляются дополнительные знаки "\", которые защищают регулярное выражение. Это связано с тем, что первый уровень знаков "\" удаляется при синтаксическом анализе строки. Первый уровень "\" перед символом возвращает его специальное значение в регулярном выражении, второй нужен, чтобы защитить его в строке.
Например, нужно найти строки, содержащие "b" и следующий за ним знак "$". Регулярное выражение для этого шаблона:
b\$
Чтобы создать строку для представления этого регулярного выражения, необходимо добавить еще один символ "\":
"b\\$"
Следующие регулярные выражения попарно эквивалентны:
| x ~ "b\\$" | x ~ /b\$/ |
| x ~ "b\$" | x ~ /b$/ |
| x ~ "b$" | x ~ /b$/ |
| x ~ \\t | x ~ /\t/ |
Регулярные выражения Perl (целиком совместимы с выражениями в
.htaccess)
| Символ | Описание |
| . | Соответствует любому символу (за исключением символа новой строки) |
| (...) | Группирует последовательность элементов |
| + | Удовлетворяет предыдущему образцу один или большее количество раз |
| ? | Удовлетворяет образцу нуль или один раз |
| * | Соответствует образцу один или нуль раз |
| [...] | Соответствует символу из заданного множества |
| [^...] | Соответствует символу из множества, полученного отрицанием |
| (...|...|...) | Соответствует одной из альтернатив |
| ^ | Соответствует началу строки |
| $ | Соответствует образцу в конце строки |
| {n, m} | Соответствует образцу от n до m раз |
| {n} | Соответствует образцу точно n раз |
| {n,} | Соответствует образцу минимум n раз |
| \n\t etc. | Соответствует знаку новой линии, символу табуляции и т. д. |
| \b | Соответствует на границе слова |
| \В | Соответствует НЕ границе слова |
| \d | Соответствует цифре |
| \D | Соответствует не цифре |
| \s | Соответствует пробелу |
| \S | Соответствует не пробелу |
| \w | Соответствует букве или цифре |
| \W | Соответствует символу, не являющемуся ни буквой, ни цифрой |
Perl помещает регулярные выражения (образцы, шаблоны) в слэши, т. е. в наклонные черточки, например, в виде /pattern/. Следующие регулярные выражения истинны если:
| /ig/ | Строка содержит 'ig' |
| /(b|d|f)ig/ | Строка содержит ‘big’, ‘dig’ or ‘fig’ |
| /[0-9]+/ | Строка содержит номер |
Регулярные используют выражения для того, чтобы упростить сравнение строк. Для того чтобы проверить, содержит ли строка заданный образец, скрипт может использовать регулярные выражения следующим образом:
if ($str =~ /pattern/)
В данном случае регулярные выражения принимают значение «истинно», если образец найден в строке ($str). Если строка по содержит образца, то выражение возвращает значение «ложно». Например, следующее выражение проверяет, содержит ли строка текст Web Programming:
if ($str =~ /Web Programming/)
Для того, чтобы проверить полное совпадение, выражение должно привязать сравнение к началу и концу строки. Например, следующее выражение имеет значением величину «истинно», если и только если переменная $str принимает одно из трех значений: «banana», «bananana») «banananana»:
($str =~ /^ba(na) {2,4}$/)
Аналогичным образом, следующее выражение истинно тогда и только тогда, когда переменная $str содержит слово «the» и не является частью другого слова, такого как «their».
($str =~ /\bthe\b/)