Регулярные выражения (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 |
Исправлены неправильные выражения в строке "Группировка". |
Обратная связь от клиента. |