Scintilla icon Регулярные выражения в SciTE
Документация   FAQ   Регулярные выражения   SciTE Extension   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-режиме), то см. [8];
    - цифре от 1 до 9, то см. [9];
    - угловой скобке, то см. [10];
    - символу d, D, s, S, w или W, то см. [11];
    - символу x и двум шестнадцатеричным цифрам, то см. [12];
Во всех остальных случаях слеш используется как экранирующий символ для всех других метасимволов и самого себя, поскольку любой другой символ (кроме описанных выше), следующий непосредственно за слешем, воспринимается как есть.
[4] [...] (набор символов) Соответствует одному из символов из набора. Если первый символ "^", то соответствует любому символу, НЕ перечисленному в наборе. Условное обозначение [S-E] используется для задания набора символов от S до E, включительно. Специальные символы "]" и "-" не имеют специального значения, если стоят первыми в наборе символов. Чтобы включить оба этих символа в набор пишите "-" первым: [-]A-Z] (или просто ставьте слеш перед ними [3]).
примеры:соответствует:
[-]|]соответствует этим 3 символам
[]-|]соответствует символам от ] до |
[a-z]любая прописная буква (латиница)
[^-]]любой символ за исключением "-" и "]"
[^A-Z]любой символ (латиница) за исключением заглавных букв
[a-zA-Z]любая буква (латиница)
[5] * любое выражение из [1] - [4] (за исключением [8], [9] и [10] форм из [3]), с закрывающим символом "*" соответствует нулевому или большему количеству совпадений выражения данного вида.
[6] + то же самое, что и [5], но минимум одно совпадение.
[5-6] Обе формы [5] и [6] - "жадные" (они соответствуют наибольшему количеству совпадений из возможных). Но если за ними следует 'ленивый' квантор (?) то [5] и [6] соответствуют наименьшему количеству совпадений.
[7] ? то же самое, что и [5], но соответствует нулю или единственному вхождению.
[8] \(...\) регулярное выражение вида [1] - [13], записанное как \(выражение\) (или (выражение) в posix-режиме) используется для создания подвыражений (подшаблонов) и соответствует самому выражению в скобках. Подвыражения (подшаблоны) используются для [9] и для замены по шаблону. Подвыражения (подшаблоны) нумеруются с 1.
[9] \1...\9 соответствует найденному ранее подвыражению (подшаблону) ([8]).
[10] \< \> регулярное выражение, начинающееся с "\<" и/или заканчивающееся на "\>", ограничивает шаблон поиска началом слова и/или концом слова. Определено, что слово должно быть строкой, начинающейся и/или заканчивающейся одним из символов A-Z a-z 0-9 и "_". Scintilla расширяет это определение, основываясь на пользовательских настройках. Перед словом и/или после него должно быть хотя бы по одному символу, не входящему в это определение.
[11] \ и следующий за ним один символов d, D, s, S, w или W задает класс символов (внешний и внутренний наборы []).
  • d: десятичная цифра
  • D: любой символ кроме десятичных цифр
  • s: пробельный символ (пробел, \t \n \r \f \v)
  • S: любой символ кроме пробельных (см. выше)
  • w: любая цифра или буква и подчеркивание (можно изменить в пользовательских настройках)
  • W: любой символ кроме букв, цифр и подчеркивания (см. выше)
[12] \xHH
(где H - шестнадцатеричная цифра)
определяет символ с данным ASCII кодом. Если цифр после x нет, то соответствует символу "x"
[13]
составное регулярное выражение xy, где x и y регулярные выражения в виде [1] - [12] соответствует совпадению выражения x и следующим за ним совпадением выражения y.
[14] ^ $ регулярное выражение начинающееся с символа "^" и/или заканчивающееся на символ "$" ограничевает шаблон поиска началом и/или концом строки. В любом другом месте в выражении символы "^" и "$" трактуются как обычные символы.

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

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

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