Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Bibd_Vopros-Otvet_k_ekzamenu.docx
Скачиваний:
27
Добавлен:
11.05.2015
Размер:
588.58 Кб
Скачать

Регулярные выражения

Регулярные выражения ("регэкспы", от англ. Regular Expressions) - мощное средство составления шаблонов, с помощью которых в заданном тексте может проводиться поиск и сопоставление символов любой сложности.

Как составляется такой шаблон? Для этого используются специальные символы, метасимволы и классы (наборы) символов. Регулярное выражение - это простая строка и любые символы в этой строке, которые не являются специальными (зарезервированными), считаются обычными символами.

Служебные символы делятся на три класса:

  • первый означает какой-либо класс (набор) символов (к примеру \w означает любую букву)

  • второй в отличии от первого не имеет длины (например ^ - начало строки, \b - начало слова)

  • третий класс - это операторы. Операторы применяются к метасимволам, к обычным символам или к другим операторам.

Любое выражение можно сгруппировать (заключить в скобки) и применить оператор ко всей группе.

Синтаксис регулярных выражений, использующийся в nnBackup, совпадает с синтаксисом регулярных выражений языка Perl. Небольшие отличия есть только в некоторых расширенных специфических операторах.

  • Синтаксис

  • Спецсимволы

  • Расширенные спецсимволы

  • Операторы

  • Расширенные операторы

Синтаксис

Все регэкспы должны заключаться в прямые слэши (/.../). После конечного слэша могут идти параметры:

/.../i

- не различать регистр.

/.../x

- игнорировать пробелы и переводы строк (для удобства).

/.../s

- считать регэксп одной единственной строкой (трактовать спецсимвол . (точка) как "любой символ, в том числе и символ перевода строки").

Примеры:

\ совпадет только со словом 'Valery'

/Valery/

\ совпадет со словами 'VALERY', 'valery', 'Valery' и т. д.

/Valery/i

\ совпадет с 'foobar', 'foobar barfoo'

/foobar/

\ совпадет с 'foobar', 'FOOBAR', 'foobar and two other foos'

/ FOO bar /ix

\ совпадет с 'Valery%crlf%Kondakoff'

/Valery.*Kondakoff/s

Каждый символ регулярного выражения последовательно сравнивается с проверяемой строкой. Все, что не является указанными ниже спецсимволами или операторами, воспринимается, как обычный символ, рассматриваемый на простое совпадение.

Спецсимволы

^

Начало строки

$

Конец строки

.

Любой символ кроме переводов строки (без параметра /.../s)

[ ... ]

Любой из перечисленного набора символов. Внутри квадратных скобок не работают другие операторы, но можно пользоваться метасимволами. С помощью дефиса можно указывать наборы символов: от первого до последнего. Например, [a-f] означает любую букву из числа abcdef.

[^ ... ]

Ни один из перечисленного набора символов. Внутри квадратных скобок не работают другие операторы, но можно пользоваться метасимволами. С помощью дефиса можно указывать наборы символов: от первого до последнего. Например, [^0-9]означает любой символы, кроме 0123456789.

\#

Следующий за слэшем символ # (кроме a-z и 0-9). Например, \\ означает символ \\. означает символ . (точка), \$ означает символ $ и т. д.

\b

Начало слова

\B

Конец слова

\xNN

NN - шестнадцатеричный код ASCII-символа (\x20 - пробел, \x4A - J, \x6A - j и т. д.)

\n

0x10 (lf)

\r

0x13 (cr)

\t

0x09 (tab)

\s

Пробел (tab/space/cr/lf)

\S

Не пробел

\w

Символ слова (буквы, цифры, _)

\W

Символ не-слова

\d

Число

\D

Не число

\u

Символ в верхнем регистре

\l

В нижнем

Примеры:

\ совпадает со словом 'help' с точкой

/help\./

\ совпадает со словами 'cats', 'cars' и т. д.

/ca.s/

\ совпадает со словами 'testing', 'tester', но не 'the test'

/^test/

\ совпадает с выражением 'see me', но не с 'meter' или 'me and you'

/me$/

\ совпадает с одной (латинской) гласной буквой

/[aeiou]/

\ совпадает с одной буквой или цифрой

/[a-z0-9]/ \ совпадает с 'footer', 'footing', 'a foot', но не с 'afoot'

/\bfoot/

\ совпадает с 'afoot', 'foot.' (точка не считается частью слова)

\ не совпадает с 'footing'

/foot\B/

\ совпадает со словом 'foot' целиком

/\bfoot\B/

\ совпадает со словами 'q2w', 'r5t' и т. д.

/\D\d\D/

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]