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

Мы используем в поиске и в правилах сегментирования те регулярные выражения, которые поддерживаются 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, кроме следующего...
`\u` hhhh | Символ с шестнадцатеричным значением `0x` hhhh
`\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 как отдельная группа

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