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


Использование регулярных выражений в Visual Studio

Visual Studio использует регулярные выражения платформы .NET Framework, чтобы поиск и замену текста.В Visual Studio 2010 и более ранних версиях Visual Studio использовало пользовательский синтаксис регулярного выражения в окнах "Найти и заменить".В этом разделе объясняется, как преобразовать некоторые более использования пользовательских символов регулярного выражения к версиям .NET.

СоветСовет

В операционных системах Windows большинство строк заканчиваются словом "\r\n" (возврат каретки с новой строкой).Эти символы не отображаются, но отсутствуют в редакторе и передаются в службу регулярных выражений платформы .NET.

Дополнительные сведения см. в разделе Регулярные выражения в .NET Framework.

СоветСовет

Дополнительные сведения о регулярных выражениях, используемых в шаблонах замены, см. в разделе Подстановки в регулярных выражениях.Для использования пронумерованной группы записи синтаксис $1 для определения пронумерованную группы и (x), чтобы определить группу в сообщении.Например, группированное регулярное выражение (\d)([a-z]) обнаруживает 4 совпадения в следующей строке. 1a 2b 3с 4d.Строка замены z$1 преобразовывает эту строку в z1 z2 z3 z4>. Эквивалентный синтаксис в Visual Studio 2010 — {:z}([a-z]) для сгруппированного регулярного выражения и z\1 для строки замены.

Сравнение регулярных выражений в .NET Framework

Регулярные выражения можно преобразовать от версии, используемой в предыдущих версиях Visual Studio с помощью регулярных выражений платформы .NET Framework с помощью следующей таблицы.

Назначение

New

Старый

Новый пример

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

.

.

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

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

*

*

a*r совпадает с "r" в "rack", "ar" в "ark" и "aar" в "aardvark"

Совпадение с любым символом ноль или более раз (подстановочный знак *)

.*

.*

c.*e совпадает с “cke” в “racket”, “comme” в “comment” и “code” в “code”

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

+

+

e.+e совпадает с "eede" в "feeder", но не с "ee".

Совпадение с любым символом один ноль или более раз (подстановочный знак ?)

.+

.+

e.+e совпадает с "eede" в "feeder", но не с "ee".

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

*?

@

e.*?e совпадает с "ee" в "feeder", но не с "eede".

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

+?

#

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

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

^

^

^car совпадает со словом "car" только тогда, когда оно находится в начале строки.

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

\r?$

$

End\r?$ совпадает с "end" только когда "end" находится в конце строки.

Совпадение с любым одиночным символом в наборе

[abc]

[abc]

b[abc] совпадает с "ba", "bb" и "bc".

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

[a-f]

[x-y]

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

Получение и неявная нумерация выражения в скобках

()

()

([a-z])X\1 совпадает с "aXa"и "bXb", но не с "aXb". ". "\ 1 " относится к первой группе выражения "[a-z]".

Признание соответствия недействительным

(?!abc)

~(abc)

прав (?!да) совпадает со словами "правый" и "правота", но не со словом "правда". Кроме того, находит второй real (но не первый real) в realityreal.

Сопоставление любого символа не в заданном наборе символов

[^abc]

[^abc]

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

Совпадение с выражением до или после символа дизъюнкции.

|

|

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

Преобразование в escape-последовательность символа, следующего за обратной косой чертой

\

\

\^ соответствует символу ^.

Укажите количество вхождений предшествующих символа или группы

{x}, где x — число вхождений

\ x, где x — число вхождений

x(ab){2}x соответствует "xababx", а x(ab){2,3}x соответствует "xababx" и "xabababx", но не "xababababx".

Сопоставление текста в классе символов Юникода, где X — номер Юникода.Дополнительные сведения о классах символов Юникода см. в разделе

Свойства символов стандарта Юникода 5.2.

\p{X}

:X

\p{Lu} совпадает с "T" и "D" в "Thomas Doe".

Совпадение с границей слова

\b (вне класса символов \b определяет границу слова, а внутри класса символов определяет стирание назад).

< и > указывают начало и конец слова

\ bin соответствует "in" в "inside", но не в "pinto".

Соответствие разрыву строки (то есть возврат каретки с новой строкой).

\r?\n

\n

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

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

\w

:a

a\wd совпадает с "add" и "a1d", но не с "a d".

Совпадение с любым символом пробела.

(?([^\r\n])\s)

:b

Общедоступный\sинтерфейс совпадает с фразой "Общедоступный интерфейс".

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

\d

:d

\d совпадает с "3" в "3456", "2" в 23" и "1" в "1".

Совпадение с символом Юникода

\uXXXX, где XXXX указывает значение символа Юникода.

\uXXXX, где XXXX указывает значение символа Юникода

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

Сопоставление идентификатора

\b(_\w+|[\w-[0-9_]]\w*)\b

:i

Соответствует "type1" но не &type1" или "#define".

Сопоставление строке внутри кавычек

((\".+?\")|('.+?'))

:q

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

Соответствие шестнадцатеричного числа

\b0[xX]([0-9a-fA-F])\b

:h

Сопоставляет "0xc67f", но не "0xc67fc67f".

Совпадение целой и дробной частей

\b[0-9]*\.*[0-9]+\b

:n

Соответствует "1.333".

См. также

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

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