- •Служебные символы используемые в shell скриптах
- •Подстановочные символы (файловые шаблоны) и регулярные выражения.
- •Файловые шаблоны в dos
- •Файловые шаблоны в ndos
- •Файловые шаблоны командного интерпретатора Shell
- •Регулярные выражения
- •Регулярные выражения интерпретатора awk
- •Регулярные выражения Perl (целиком совместимы с выражениями в .Htaccess)
- •Регулярные выражения php
- •Синтаксис регулярных выражений (posix)
- •Синтаксис регулярных выражений в стиле Perl
- •Регулярные выражения в JavaScript
Регулярные выражения
Регулярные выражения – это больше чем файловые шаблоны. Регулярные выражения, в отличие от файлового шаблона, могут использоваться не только для поиска файлов по маске (более того, с этой целью они могут использоваться непосредственно только в файлах конфигурации сервера, например, .htaccess), но и для анализа текста, для чего не применимы файловые шаблоны.
Регулярные выражения интерпретатора awk
Простейшим регулярным выражением является строка символов, обрамленная знаками "/". Например:
/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/ |