Регулярные выражения - очень мощный инструмент для поиска текстовых строк и проверки соответствия их шаблону. Они позволяют искать слова по сложным критериям. Регулярные выражения предназначены главным образом для профессионалов, однако могут быть полезны и при работе в офисе для поиска определённых документов. Total Commander поддерживает регулярные выражения в следующих функциях:
Регулярные выражения состоят из обычных символов и специальных символов, так называемых метасимволов. Следующие символы - это метасимволы или их начальные части: . \ ( ) [ ] { } ^ $ + * ? (кроме того, только в определении множеств символов: - ). Обычные символы.Любой обычный символ означает сам себя, то есть в искомой строке должен находиться в точности этот символ и ничто иное. То же самое относится к нескольким обычным символам, идущим подряд. Пример: тест находит строку "тест" в исследуемом тексте. Обратите внимание: "тест" при этом обнаруживается В ЛЮБОМ МЕСТЕ имени файла или текстовой строки. Escape-последовательность начинается с обратной косой черты \. Варианты Escape-последовательностей:
Примеры: В\x20начале находит 'В начале' (обратите внимание на пробел). \tВначале находит 'Вначале' с предшествующей табуляцией. Множества символов. Символы в квадратных скобках задают множества символов. Будет найден ровно один символ из перечисленных. Чёрточка позволяет определять группы, например [a-z] - это все 26 малых латинских букв. При указании ^ в качестве первого символа множества идёт поиск всех символов, кроме перечисленных. Если необходимо включить во множество саму чёрточку, поместите её в начало или конец списка или предварите символом обратной косой черты: '\-'. Если необходимо добавить во множество сам символ ']', поместите его в самое начало или, точно так же, поставьте перед ним обратную косую черту: '\]'. Примеры:
Метасимволы. Вот список наиболее важных метасимволов:
Метасимвол границы слова (\b) означает, что в том месте, где он находится, обязательно должно быть либо начало, либо конец слова. Метасимвол \B, напротив, означает, что в указанном месте границы слова быть не должно. Пример: Выражение abc\b найдёт подстроку 'abc' в строке 'xabc def' и не найдёт ничего в строке 'xabcdef'. Выражение abc\B, наоборот, ничего не найдёт в 'xabc def' и обнаружит подстроку 'abc' в строке 'xabcdef'. Итераторы (метасимволы повторов) используются для повторения символа или выражения, находящегося слева от итератора.
Все эти операторы "жадные". Это означает, что они захватывают максимально возможное число символов. Размещение вопросительного знака ? после оператора делает его "не жадным", то есть захватывающим символы не более необходимого минимума. Пример: 'b+', как и 'b*', применённые ко входной строке 'abbbbc' найдут 'bbbb', в то время как 'b+?' найдёт только 'b', а 'b*?' - вообще пустую строку; 'b{2,3}' найдёт 'bbb', в то время как 'b{2,3}?' найдёт 'bb'. Если фигурные скобки встречаются в "неправильном" месте, где они не могут быть восприняты как итератор, то они воспринимаются как обычные символы. Варианты (альтернативы) помещаются в круглые скобки и разделяются вертикальной чертой. В качестве первого варианта воспринимается всё от предыдущего метасимвола " (" или "[" или от начала выражения до первого метасимвола "|", в качестве последнего - всё от последней вертикальной черты "|" до конца выражения или до ближайшего метасимвола ")". Варианты пробуются, начиная с первого. Попытки завершаются, как только удастся подобрать такой вариант, при котором совпадет вся последующая часть выражения. Это означает, что варианты не обязательно обеспечат "жадное" поведение. Пример: по вариантам (Иоанн|Иаков|Пётр) обнаруживается одно из имён: Иоанн, Иаков или Пётр. Следует знать, что метасимвол "|" воспринимается как обычный символ внутри множеств символов. Например, [бак|бок|бук] означает ровно то же самое что и [ баоук|]. Подвыражения для поиска+замены. Текстовые фрагменты в круглых скобках считаются подвыражениями. Подвыражения нумеруются слева направо, в порядке появления открывающих скобок. Пример: Чтобы поменять местами заголовок и пояснение в имени mp3-файла, когда они разделены чёрточкой (Заголовок - Пояснение.mp3), можно поступить следующим образом:
Примеры: (.)\1+ Находит, например, 'aaaa' и 'cc'. (.+)\1+ Находит, например, 'abab' (где в первый раз 'ab' находится посредством .+ и во второй - посредством \1+ ) и '123123'. Модификаторы используются для изменения поведения регулярных выражений.
Прочие модификаторы неприменимы для Total Commander , поскольку программа поддерживает только поиск в пределах одной строки. Total Commander использует свободную Delphi-библиотеку TRegExpr Андрея В. Сорокина: http://regexpstudio.com/ Часть приведённых выше объяснений и примеров позаимствована из справочного файла к этой библиотеке. |