Составление регулярных выражений

Мы используем в поиске и в правилах сегментирования те регулярные выражения, которые поддерживаются Java. Если вам нужна более точная информация, обратитесь по адресу http://java.sun.com/j2se/1.4.2/docs/api/java/util/regex/Pattern.html.

В сети можно найти простые инструктажи по регулярным выражениям (http://www.regular-expressions.info/quickstart.html, например).

Вот это выражение:

Соответствует вот этой последовательности:


Флаги

(?i) Включает поиск совпадений независимо от регистра символов (по умолчанию все шаблоны чувствительны к регистру)

Символы

x Символ x, кроме следующего...
\uhhhh Символ с шестнадцатеричным значением 0xhhhh
\t Символ табуляции ('\u0009')
\n Символ новой строки (line feed) ('\u000A')
\r Символ возврата каретки ('\u000D')

Кавычки

\ Только закавычивает следующий символ. Это нужно, если вы хотите ввести метасимволы !$()*+.<>?[\]^{|} в качестве их буквальных значений.
\\ Например, это будет символ обратного слэша
\Q Только закавычивает все символы до \E
\E Только прекращает закавычивание, начатое \Q

Классы символов

[abc] a, b или c (простой класс)
[^abc] Любой символ, кроме a, b или c (отрицание)
[a-zA-Z] От a до z или от A до Z включительно (диапазон)

Предустановленные классы символов

Любой символ (кроме символов конца строки)
\d Цифра: [0-9]
\D Не цифра: [^0-9]
\s Символ пробела: [ \t\n\x0B\f\r]
\S Не символ пробела: [^\s]
\w Символ слова: [a-zA-Z_0-9]
\W Не символ слова: [^\w]

Границы

^ Начало строки
$ Конец строки
\b Граница слова
\B Не граница слова

"Жадные" кванторы

Они будут искать как можно больше совпадений. Например, a+ выдаст на выходе aaa из последовательности aaabbb.
X? X, один раз или ни разу
X* X, ноль или больше раз
X+ X, один или больше раз

"Ленивые" ("нежадные") кванторы

Они будут искать как можно меньше совпадений. Например, a+? выдаст на выходе первую a из последовательности aaabbb.
X?? X, один раз или ни разу
X*? X, ноль или больше раз
X+? X, один или больше раз

Логические операторы

XY X, за которым идёт Y
X|Y Или X или Y
(XY) XY как отдельная группа

Надлежащие уведомления