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

Регулярные выражения — очень мощный инструмент для поиска текстовых строк и проверки соответствия их шаблону. Они позволяют искать слова по сложным критериям. Регулярные выражения предназначены главным образом для профессионалов, однако могут быть полезны и при работе в офисе для поиска определённых документов.
Total Commander поддерживает регулярные выражения в следующих функциях:

Команды — Поиск файлов (в имени и содержимом файла).

Во внутренней программе просмотра.

В инструменте группового переименования.

При выделении файлов по маске.

Регулярные выражения состоят из обычных символов и специальных символов, так называемых метасимволов. Следующие символы — это метасимволы или их начальные части:
. ( ) [ ] { } ^ $ + * ? (кроме того, только в определении множеств символов: — ).
Обычные символы.Любой обычный символ означает сам себя, то есть в искомой строке должен находиться в точности этот символ и ничто иное. То же самое относится к нескольким обычным символам, идущим подряд.
Пример:
тест находит строку "тест" в исследуемом тексте. Обратите внимание: "тест" при этом обнаруживается В ЛЮБОМ МЕСТЕ имени файла или текстовой строки.
Escape-последовательность начинается с обратной косой черты .
Варианты Escape-последовательностей:

t Символ табуляции;

xnn Символ с шестнадцатеричным ASCII-кодом nn. Пример: x20 — символ пробела. Таблица символов Windows (если она установлена, её запускаемый файл — charmap.exe) показывает символьные коды большинства специальных символов. Вы можете использовать калькулятор Windows в инженерном режиме для преобразования десятичных значений в шестнадцатеричные;

[ Левая квадратная скобка. Поскольку квадратные скобки — метасимволы, они должны быть записаны как [ для поиска их в целевой строке;

\ Найти обратную косую черту;

. Найти точку (символ "." является метасимволом и служит для поиска произвольного символа).

Примеры:
Вx20начале находит ‘В начале’ (обратите внимание на пробел).
tВначале находит ‘Вначале’ с предшествующей табуляцией.
Множества символов. Символы в квадратных скобках задают множества символов. Будет найден ровно один символ из перечисленных. Чёрточка позволяет определять группы, например [a-z] — это все 26 малых латинских букв. При указании ^ в качестве первого символа множества идёт поиск всех символов, кроме перечисленных.
Если необходимо включить во множество саму чёрточку, поместите её в начало или конец списка или предварите символом обратной косой черты: ‘-‘. Если необходимо добавить во множество сам символ ‘]’, поместите его в самое начало или, точно так же, поставьте перед ним обратную косую черту: ‘]’.
Примеры:

[аеиоу] Находит ровно одну из перечисленных гласных;

[^аеиоу] Находит любой символ, кроме этих гласных;

M[ae][iy]er Находит фамилию "Meier" во всех возможных способах написания: Mayer, Meyer, Maier, Meier. Очень полезно, если вы не можете вспомнить точное написание имени.

Метасимволы.
Вот список наиболее важных метасимволов:

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

$ Конец строки;

. Любой символ;

w Алфавитно-цифровой символ или знак подчёркивания ‘_’;

W Дополнение к w, т.е. любой символ, кроме алфавитно-цифровых и подчёркивания;

d Цифра;

D Дополнение к d (не цифра);

s Разделитель между словами (пробел, табуляция и пр.);

S Дополнение к s (любой символ, кроме разделителей);

b Указывает границу слова;

B Указывает, что данная позиция не является границей слова.

Метасимвол границы слова (b) означает, что в том месте, где он находится, обязательно должно быть либо начало, либо конец слова. Метасимвол B, напротив, означает, что в указанном месте границы слова быть не должно.
Пример:
Выражение abcb найдёт подстроку ‘abc’ в строке ‘xabc def’ и не найдёт ничего в строке ‘xabcdef’. Выражение abcB, наоборот, ничего не найдёт в ‘xabc def’ и обнаружит подстроку ‘abc’ в строке ‘xabcdef’.
Итераторы (метасимволы повторов) используются для повторения символа или выражения, находящегося слева от итератора.

* Ноль или более вхождений, то же что и {0,};

? Ноль или одно вхождение, то же что и {0,1};

+ Одно вхождение или более, то же что и {1,};

{n} Ровно n вхождений;

{n,} Не менее n вхождений;

{,m} Не менее n и не более m вхождений.

Все эти операторы "жадные". Это означает, что они захватывают максимально возможное число символов. Размещение вопросительного знака ? после оператора делает его "не жадным", то есть захватывающим символы не более необходимого минимума.
Пример: ‘b+’, как и ‘b*’, применённые ко входной строке ‘abbbbc’ найдут ‘bbbb’, в то время как ‘b+?’ найдёт только ‘b’, а ‘b*?’ — вообще пустую строку; ‘b{2,3}’ найдёт ‘bbb’, в то время как ‘b{2,3}?’ найдёт ‘bb’.
Если фигурные скобки встречаются в "неправильном" месте, где они не могут быть восприняты как итератор, то они воспринимаются как обычные символы.
Варианты (альтернативы) помещаются в круглые скобки и разделяются вертикальной чертой.
В качестве первого варианта воспринимается всё от предыдущего метасимвола "
(" или "[" или от начала выражения до первого метасимвола "|", в качестве последнего — всё от последней вертикальной черты "|" до конца выражения или до ближайшего метасимвола ")".
Варианты пробуются, начиная с первого. Попытки завершаются, как только удастся подобрать такой вариант, при котором совпадет вся последующая часть выражения. Это означает, что варианты не обязательно обеспечат "жадное" поведение.
Пример: по вариантам (Иоанн|Иаков|Пётр) обнаруживается одно из имён: Иоанн, Иаков или Пётр.
Следует знать, что метасимвол "|" воспринимается как обычный символ внутри множеств символов. Например, [бак|бок|бук] означает ровно то же самое что и [
баоук|].
Подвыражения для поиска+замены. Текстовые фрагменты в круглых скобках считаются подвыражениями. Подвыражения нумеруются слева направо, в порядке появления открывающих скобок.
Пример:
Чтобы поменять местами заголовок и пояснение в имени mp3-файла, когда они разделены чёрточкой (Заголовок — Пояснение.mp3), можно поступить следующим образом:

Найти: (.*) — (.*).mp3.

Заменить на: $2 — $1.mp3.

Здесь $1 означает текст в первых скобках, а $2 — текст во вторых скобках.

Обратные ссылки.

n Указывает на повторное вхождение подвыражения номер n. Здесь n — число от 1 до 9.

Примеры:
(.)1+ Находит, например, ‘aaaa’ и ‘cc’.
(.+)1+ Находит, например, ‘abab’ (где в первый раз ‘ab’ находится посредством .+ и во второй — посредством 1+ ) и ‘123123’.
Модификаторы используются для изменения поведения регулярных выражений.

(?i) Отключает проверку верхнего/нижнего регистра. В Total Commander это значение включено по умолчанию для имён файлов.

(?-i) Включает проверку регистра.

(?g) Переключение на "жадный" режим (активно по умолчанию).

(?-g) Выключение "жадного" режима, после чего "+" будет означать то же, что и "+?".

Прочие модификаторы неприменимы для Total Commander , поскольку программа поддерживает только поиск в пределах одной строки.
Total Commander использует свободную Delphi-библиотеку TRegExpr Андрея В. Сорокина: http://regexpstudio.com/
Часть приведённых выше объяснений и примеров позаимствована из справочного файла к этой библиотеке.

‹ Избранные каталоги
Вверх
Внутренний просмотрщик меню "Опции" и меню "ХХХ%" ›

Айтистанция
Добавить комментарий