| Регулярные выражения в SciTE
Документация FAQ Регулярные выражения LUA SciTE Director Команды SciTE и Scintilla Сборка Ru-Board Ядро SciTE-Ru Shell SciTE Helper История

### Назначение

Для поиска по шаблону удобнее использовать регулярные выражения, чем текстовый поиск. Например, для поиска переменных в файлах свойств SciTE, которые выглядят как $(name.subname) можно использовать:
`\$([a-z.]+)` (или `\$\([a-z.]+\)` в posix-режиме)

Использование регулярных выражений для замены позволяет производить комплексные преобразования. Например: пару номеров разделенных "," (запятой) можно поменять местами, используя замену с регулярным выражением:
`\([0-9]+\),\([0-9]+\)` (или `([0-9]+),([0-9]+)` в posix-режиме, или даже `(\d+),(\d+)`)
на:
`\2,\1`

### Синтаксис

Синтаксис регулярных выражений зависит от параметра `find.replace.regexp.posix`.
Если он установлен в 0, используется старый Unix-овый синтаксис, где \( и \) обозначают границы подвыражений (подшаблонов), а ( и ) - сами себя.
Если же он установлен в 1, то используется общепринятый синтаксис, где ( и ) обозначают границы подвыражений (подшаблонов), а \( и \), соответственно, круглые скобки.

№ | Выражение | Пояснения
--- | --- | ---
[1] | символ | символы соответствуют сами себе, за исключением специальных символов (метасимволов): `. \ [ ] * + ^ $` и `( )` в posix-режиме.
[2] | `.` (точка) | соответствует любому символу.
[3] | `\` (слеш) | `\a`, `\b`, `\f`,`\n`, `\r`, `\t`, `\v` - обозначают управляющий символ, соответственно, BEL(звонок), BS(backspaсe), FF(новая страница), LF(новая строка), CR(возврат каретки), TAB (знак табуляции) и VT (вертикальный знак табуляции); Предупреждение: `\r` и `\n` никогда не будут найдены, потому что в Scintilla регулярные выражения обрабатывают строку за строкой за исключением символов конца строки. Если следующий за слешем символ соответствует: - правой или левой круглой скобке (не в posix-режиме), то см. [7]; - цифре от 1 до 9, то см. [8]; - угловой скобке, то см. [9]; - символу d, D, s, S, w или W, то см. [10]; - символу x и двум шестнадцатеричным цифрам, то см. [11]; Во всех остальных случаях слеш используется как экранирующий символ для всех других метасимволов и самого себя, поскольку любой другой символ (кроме описанных выше), следующий непосредственно за слешем, воспринимается как есть.
[4] | `[`...`]` (набор символов) | Соответствует одному из символов из набора. Если первый символ "^", то соответствует любому символу, НЕ перечисленному в наборе. Условное обозначение [S-E] используется для задания набора символов от S до E, включительно. Специальные символы "]" и "-" не имеют специального значения, если стоят первыми в наборе символов. Чтобы включить оба этих символа в набор пишите "-" первым: [-]A-Z] (или просто ставьте слеш перед ними [3]).
примеры: | соответствует:
--- | ---
`[-]|]` | соответствует этим 3 символам
`[]-|]` | соответствует символам от ] до |
`[a-z]` | любая прописная буква (латиница)
`[^-]]` | любой символ за исключением "-" и "]"
`[^A-Z]` | любой символ (латиница) за исключением заглавных букв
`[a-zA-Z]` | любая буква (латиница)
[5] | `*` | любое выражение из [1] - [4] (за исключением [7], [8] и [9] форм из [3]), с закрывающим символом "*" соответствует нулевому или большему количеству совпадений выражения данного вида.
[6] | `+` | то же самое, что и как [5], но минимум одно совпадение. Обе формы [5] и [6] - "жадные" (они соответствуют наибольшему количеству совпадений из возможных)
[7] | `\(`...`\)` | регулярное выражение вида [1] - [12], записанное как \(выражение\) (или (выражение) в posix-режиме) используется для создания подвыражений (подшаблонов) и соответствует самому выражению в скобках. Подвыражения (подшаблоны) используются для [8] и для замены по шаблону. Подвыражения (подшаблоны) нумеруются с 1.
[8] | `\1`...`\9` | соответствует найденному ранее подвыражению (подшаблону) ([7]).
[9] | `\< \>` | регулярное выражение, начинающееся с "\<" и/или заканчивающееся на "\>", ограничивает шаблон поиска началом слова и/или концом слова. Определено, что слово должно быть строкой, начинающейся и/или заканчивающейся одним из символов `A-Z a-z 0-9` и "`_`". Scintilla расширяет это определение, основываясь на пользовательских настройках. Перед словом и/или после него должно быть хотя бы по одному символу, не входящему в это определение.
[10] | `\` и следующий за ним один символов `d, D, s, S, w` или `W` | задает класс символов (внешний и внутренний наборы []). d: десятичная цифра D: любой символ кроме десятичных цифр s: пробельный символ (пробел, \t \n \r \f \v) S: любой символ кроме пробельных (см. выше) w: любая цифра или буква и подчеркивание (можно изменить в пользовательских настройках) W: любой символ кроме букв, цифр и подчеркивания (см. выше)
[11] | `\xHH` (где H - шестнадцатеричная цифра) | определяет символ с данным ASCII кодом. Если цифр после `x` нет, то соответствует символу "x"
[12] |  | составное регулярное выражение xy, где x и y регулярные выражения в виде [1] - [10] соответствует совпадению выражения x и следующим за ним совпадением выражения y.
[13] | `^ $` | регулярное выражение начинающееся с символа "^" и/или заканчивающееся на символ "$" ограничевает шаблон поиска началом и/или концом строки. В любом другом месте в выражении символы "^" и "$" трактуются как обычные символы.

### Благодарности

Большая часть документации написана Ozan S. Yigit.
Дополнено Neil Hodgson и Philippe Lhoste.
Все в данном документе находиться в общественном доступе.

- Русский перевод: s_mart и dB6