Поделиться через


Регулярные выражения (Visual Studio)

Регулярные выражения представляют собой компактный и гибкий формат записи условий для поиска и замены в тексте по шаблону. При выполнении операций, определяемых на вкладках Быстрый поиск, Найти в файлах, Быстрая замена или Заменить в файлах, можно использовать определенный набор регулярных выражений в полях Найти и Заменить на Окно "Поиск и замена".

Для включения возможности использования регулярных выражений разверните раздел Параметры поиска в окне Поиск и замена, установите флажок Использовать и выберите параметр Регулярные выражения. Становится доступной треугольная кнопка Построитель выражений, расположенная рядом с полями Найти и Заменить на. Нажмите эту кнопку для просмотра списка часто используемых регулярных выражений. При выборе регулярного выражения в списке это выражение вставляется в месте расположения курсора в поле Найти или Заменить на. Если щелкнуть пункт Полный список знаков в конце списка Построитель выражений, открывается раздел справки. В этом разделе содержатся все регулярные выражения, распознаваемые операциями поиска и замены в среде Visual Studio. Можно скопировать регулярное выражение из раздела и вставить его в поле Найти или Заменить на.

Примечание

Имеется много отличий синтаксиса регулярных выражений, используемых в полях Найти и Заменить на, от синтаксиса, применяемого в программировании на платформе .NET Framework.Например, в окне Найти и заменить фигурные скобки {} используются для обозначения заменяемых выражений: чтобы заменить каждое вхождение строки doesn't на does not, необходимо использовать выражение поиска {does}n't и выражение замены \1 not.

Регулярные выражения для операций поиска и замены

Ниже перечислены часто используемые регулярные выражения, отображаемые в списке Построитель выражений.

Выражение

Синтаксис

Описание

Пример

Любой знак

.

Совпадает с любым одиночным знаком, кроме символа разрыва строки.

а.о совпадает с "ато" в слове "каток" и "aзo" в слове "азот", но не с "арто" в слове "картон".

Ноль или более

*

Совпадает с нулем или большим числом вхождений предыдущего выражения, создавая все возможные совпадения.

a*в совпадает с "в" в слове "винт" и "ав" в слове "авто".

e.*e совпадает со словом "предприятие".

Один или более

+

Совпадает с одним или несколькими вхождениями предыдущего выражения.

ac+ совпадает со словами, содержащими букву "a" и не менее одного вхождения "c", например с "раса" и "касса".

a.+с совпадает со словом "абсцесс".

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

^

Совпадает с вхождением, только если оно находится в начале строки текста, в котором производится поиск.

^лак совпадает со словом "лак", только если оно является первым набором знаков в строке редактора.

Конец строки

$

Совпадает с вхождением, только если оно находится в конце строки текста, в котором производится поиск.

конец$ совпадает со словом "конец", только если оно является последним набором знаков в строке редактора.

Начало слова

<

Совпадает с вхождением, только если оно является началом слова в тексте.

<про совпадает с такими словами, как "продажа" и "процесс", которые начинаются с букв "про".

Конец слова

>

Совпадает с вхождением, только если оно является концом слова в тексте.

сс> совпадает с такими словами, как "процесс" и "класс", которые заканчиваются на буквы "сс".

Символ разрыва строки

\n

Совпадает с символом разрыва строки, не зависящим от системы. Вставляет символ разрыва строки в выражение замены.

Конец\nНачало совпадает со словами "Конец" и "Начало", только если "Конец" является последним словом в строке, а "Начало" — первым словом следующей строки.

В качестве выражения замены

Конец\nНачало заменяет слово "Конец" на "Начало" в первой строке, вставляет символ разрыва строки, а затем заменяет слово "Начало" на слово "Конец".

Любой знак из набора

[]

Совпадает с любым из знаков внутри квадратных скобок ([]). Чтобы указать диапазон знаков, начальный и конечный знаки следует вводить через дефис (-), например [a-z].

ве[н-т] совпадает с "вен" в слове "вена", "вес" в слове "весна" и "вет" в слове "ветер", но не с "век" в слове "веко".

Любой знак, не входящий в набор

[^...]

Соответствует любому знаку, не принадлежащему набору знаков, которому предшествует символ ^.

ве[^н-т] совпадает с "век" в слове "веко", "вел" в слове "велосипед" и "веч" в слове "вечер", но не с "вен" в слове "вена".

Или

|

Совпадает с выражением до или после символа дизъюнкции (|). В основном используется в группах.

(хвойный|лиственный) лес совпадает со строками "хвойный лес" и "лиственный лес".

Escape-символ

\

Соответствует знаку, который следует за обратной косой чертой (\) в качестве литерала. Это позволяет искать знаки, имеющие специальное значение в регулярных выражениях, такие как { или ^.

\^ позволяет найти знак ^.

Выражение, заключенное в теги (или обратная ссылка)

{}

Использует текст, который находится внутри скобок, для определения мест, где нужно заменить текст.

{does}n't идентифицирует текст, предшествующий замене в строке замены \1 not, для изменения каждого вхождения doesn't на does not.

Идентификатор C/C++

:i

Сокращенная запись выражения ([a-zA-Z_$][a-zA-Z0-9_$]*).

Соответствует любому возможному идентификатору C/C++.

Строка в кавычках

:q

Сокращенная запись выражения (("[^"]*")|('[^']*')), которое соответствует всем знакам, заключенным в двойные или одинарные кавычки, а также самим кавычкам.

:q совпадает со строками "тестовая кавычка" и 'тестовая кавычка', но не со строкой 'об'явление.

Пробел или символ табуляции

:b

Совпадает с пробелами или символами табуляции.

Общедоступный:bИнтерфейс совпадает в тексте с фразой "Общедоступный интерфейс".

Целое число

:z

Сокращенная запись выражения ([0-9]+), которое соответствует любому сочетанию числовых знаков.

Совпадает с любым целым числом, например "1", "234", "56" и т.д.

Полный список регулярных выражений, допустимых в операциях поиска и замены, значительно обширнее списка Построитель выражений. Перечисленные ниже регулярные выражения не отображаются в Построителе выражений, однако их можно использовать в полях Найти и Заменить на.

Выражение

Синтаксис

Описание

Пример

Минимальное количество — ноль или больше

@

Соответствует нулю или большему числу вхождений предыдущего выражения, совпадая с минимальным количеством знаков.

e.@ совпадает с "ente" и "erprise" в слове "enterprise", но не с целым словом "enterprise".

Минимальное количество — один или больше

#

Соответствует одному или нескольким вхождениям предыдущего выражения, совпадая с минимальным количеством знаков.

ac# совпадает со словами, содержащими букву "a" и не менее одного вхождения "c", например с "наст".

a.#s совпадает со строкой "абсцесс" в слове "абсцесс".

Повтор n раз

^n

Совпадает с числом n вхождений предыдущего выражения.

[0-9]^4 совпадет с любым четырехзначным числом.

Группировка

()

Позволяет группировать выражения в наборы. Для того, чтобы выполнить поиск двух различных выражений в одной операции, можно объединить эти выражения с помощью группировки.

Чтобы найти совпадения с выражениями - [a-z][1-3] или - [0-9][a-z], их следует объединить: (- [a-z][1-3])|(- [0-9][a-z]).

n-й текст, заключенный в теги

\n

Применяется в выражениях, используемых для поиска или замены, и указывает текст, обозначаемый n-м выражением-меткой, где n является числом от 1 до 9.

В операциях замены выражение \0 используется для вставки полностью совпавшего текста.

Если выполняется поиск выражения a{[0-9]} и его замена выражением\1, все вхождения "a", за которыми следует цифра, заменяются этой цифрой. Например, "a1" заменяется на "1", а "a2" соответственно на "2".

Выравнивание по правому краю

\(w,n)

В выражении замены выравнивает по правому краю n-е выражение-метка, в поле шириной, по крайней мере, w знаков.

Если выполняется поиск выражения a{[0-9]} и его замена выражением \(10,1), все вхождения "an" заменяются этим целым числом и выравниваются по правому краю в поле шириной 10 знаков.

Выравнивание по левому краю

\(-w,n)

В выражении замены выравнивает по левому краю n-е выражение-метка, в поле шириной, по крайней мере, w знаков.

Если выполняется поиск выражения a{[0-9]} и его замена выражением \(-10,1), все вхождения "an" заменяются этим целым числом и выравниваются по левому краю в поле шириной 10 знаков.

Предотвращение совпадения

~(X)

Предотвращает совпадение, когда X появляется в этом месте выражения.

прав~(да) совпадает со словами "правый" и "правота", но не со словом "правда".

Буквенно-цифровой знак

:a

Совпадает с выражением ([a-zA-Z0-9]).

Совпадает с любым буквенно-цифровым знаком, например "a", "A", "w", "W", "5" и т. д.

Буква

:c

Совпадает с выражением ([a-zA-Z]).

Совпадает с любым буквенным знаком, например "a", "A", "w", "W" и т. д.

Десятичная цифра

:d

Совпадает с выражением ([0-9]).

Совпадает с любой цифрой, например "4" или "6".

Шестнадцатеричная цифра

:h

Совпадает с выражением ([0-9a-fA-F]+).

Совпадает с любым шестнадцатеричным числом, например "1A", "ef", и "007".

Рациональное число

:n

Совпадает с выражением (([0-9]+.[0-9]*)|([0-9]*.[0-9]+)|([0-9]+)).

Совпадает с любым рациональным числом, например "2007", "1.0" и ".9".

Строка букв

:w

Совпадает с выражением ([a-zA-Z]+).

Совпадает с любой строкой, содержащей буквенные знаки.

Escape-символ

\e

Код Юникода U+001B.

Совпадает с управляющим escape-символом.

Спецсимвол Bell

\g

Код Юникода U+0007

Совпадает с управляющим знаком "Bell".

Backspace

\h

Код Юникода U+0008.

Совпадает с управляющим знаком "Backspace".

Вкладка

\t

Код Юникода U+0009.

Соответствует знаку табуляции.

Знак Юникода

\x#### или \u####

Совпадает со знаком, который соответствует значению #### в шестнадцатеричных цифрах Юникода. Знак, который не входит в базовый многоязыковый набор кодировок (т. е. знак-заместитель), можно указать с помощью элементов кода ISO 10646 или двух элементов Юникода, дающих значение суррогатной пары.

\u0065 совпадает со знаком "e".

В следующей таблице перечислены двухбуквенные сокращения, которые используются для указания общих категорий, содержащихся в базе данных свойств знаков Юникода. Эти сокращения можно использовать в качестве элементов набора знаков регулярных выражений. Например, выражение [:Nd:Nl:No] совпадает с любым типом цифр.

Дополнительные сведения о базе данных свойств знаков Юникода см. в статье Свойства знаков стандарта Юникод версии 5.0 (на английском языке).

Выражение

Синтаксис

Описание

Прописная буква

:Lu

Совпадает с любой прописной буквой.

Примеры.

:Luнига совпадает со строкой "Книга", но не "книга".

Строчная буква

:Ll

Совпадает с любой строчной буквой.

Примеры.

:Llнига совпадает со строкой "книга", но не "Книга".

Буквы как в заголовке

:Lt

Совпадает со строкой из одной заглавной и одной прописной буквы, например "Но" или "Др".

Буква-модификатор

:Lm

Совпадает со знаками пунктуации, например запятыми, знаками ударений, двойными штрихами, используемыми для обозначения модификации предыдущей буквы.

Другая буква

:Lo

Совпадает с другими буквами, например с готической буквой "asha".

Десятичная цифра

:Nd

Совпадает с десятичными цифрами от 0 до 9 и их эквивалентами полной ширины.

Цифра, обозначаемая буквой

:Nl

Совпадает с цифрами, обозначаемыми при помощи букв, такими как римские цифры или идеографический ноль.

Другая цифра

:No

Совпадает с другими цифрами, такими как старая курсивная единица.

Открывающий знак пунктуации

:Ps

Совпадает с открывающим знаком пунктуации, таким как открывающие круглые или фигурные скобки.

Закрывающий знак пунктуации

:Pe

Совпадает с закрывающим знаком пунктуации, таким как закрывающие круглые или фигурные скобки.

Открывающие кавычки

:Pi

Совпадает со знаком открывающих двойных кавычек.

Закрывающие кавычки

:Pf

Совпадает с одиночными кавычками или знаком закрывающих двойных кавычек.

Тире

:Pd

Совпадает со знаком тире.

Соединительные знаки пунктуации

:Pc

Совпадает с символом подчеркивания или знаком выделения подчеркиванием.

Другие знаки пунктуации

:Po

Совпадает со знаками (,), ?, ", !, @, #, %, &, *, \, (:), (;), ' и /.

Разделитель в виде пробела

:Zs

Совпадает с пробелами.

Разделитель строки

:Zl

Совпадает со знаком Юникода U+2028.

Разделитель абзаца

:Zp

Совпадает со знаком Юникода U+2029.

Знак, отличный от пробела

:Mn

Совпадает со всеми знаками, отличными от пробелов.

Объединяющий знак

:Mc

Совпадает с объединяющими знаками.

Вложенный знак

:Me

Совпадает с вложенными знаками.

Математический символ

:Sm

Совпадает со знаками +, =, ~, |, < и >.

Символ денежной единицы

:Sc

Совпадает со знаком $ и остальными символами денежных единиц.

Символ-модификатор

:Sk

Совпадает с символами-модификаторами, например двойным, одинарным диакритическим ударением и знаком долготы над гласными.

Другой символ

:So

Совпадает с другими символами, такими как знак авторского права, абзаца и возведения в степень.

Другой управляющий знак

:Cc

Совпадает с управляющими знаками Юникода, такими как TAB и NEWLINE.

Другой формат

:Cf

Управляющий знак форматирования, например двусторонние управляющие знаки.

Суррогатный знак

:Cs

Совпадает с половиной суррогатной пары.

Другой личный символ

:Co

Совпадает со знаками из области личных символов.

Другие не присвоенные знаки

:Cn

Знаки, не имеющие соответствия символам Юникода.

В дополнение к стандартным свойствам знаков Юникода в качестве набора знаков также могут быть объявлены следующие свойства.

Выражение

Синтаксис

Описание

Альфа

:Al

Совпадает с любым одиночным знаком.

Например, :Alда совпадает со словами "правда", "вода" и "сдача".

Число

:Nu

Совпадает с любым одиночным числом или цифрой.

Знак пунктуации

:Pu

Совпадает с любым знаком пунктуации, таким как ?, @, ' и т. д.

Пробел

:Wh

Совпадает со всеми типами пробелов, включая публицистический и идеографический пробелы.

Двунаправленный текст

:Bi

Совпадает со всеми знаками алфавитов с записью справа налево, таких как арабский или иврит.

Знаки Хангыль

:Ha

Совпадает с корейскими символами Хангыль и составными знаками Джамо (Jamos).

Хирагана

:Hi

Совпадает со знаками хираганы.

Катакана

:Ka

Совпадает со знаками катаканы.

Идеографические знаки / знаки Хань / знаки Кандзи

:Id

Совпадает со всеми идеографическими знаками, например знаками Хань и Кандзи.

См. также

Ссылки

Знаки подстановки (Visual Studio)

Окно "Быстрый поиск", "Поиск и замена"

Окно "Быстрая замена", "Поиск и замена"

Окно "Поиск в файлах", "Поиск и замена"

Окно "Замена в файлах", "Поиск и замена"

Команды с аргументами в Visual Studio

Другие ресурсы

Поиск и замена

Журнал изменений

Дата

Журнал

Причина

Июнь 2010

Исправлены неправильные выражения в строке "Группировка".

Обратная связь от клиента.