Używanie wyrażeń regularnych w Visual Studio

Visual Studio używa regularnego wyrażenia .NET Framework, aby odnaleźć i zastąpić tekst.W Visual Studio 2010 i wersjach starszych program Visual Studio używał niestandardowych składni wyrażeń regularnych w oknach Znajdź i Zamień.Ten temat tłumaczy jak konwertować niektóre częściej używane niestandardowe znaki regularnych wyrażeń do wersji .NET.

PoradaPorada

W systemach operacyjnych Windows większość linii kończyć się znakiem "\r\n" (rozpoczęcie nowego wiersza po znaku powrotu karetki).Znaki te nie są widoczne, ale są obecne w edytorze i przekazywane do usługi .NET Regular Expression.

Aby uzyskać więcej informacji, zobacz .NET Framework — Wyrażenia regularne.

PoradaPorada

Aby uzyskać informacje o wyrażeniach regularnych używanych we wzorcach zastąpień, zobacz Podstawienia w wyrażeniach regularnych.Aby użyć numerowanej grupy uchwyconej, składnia to $1, aby określić numerowaną grupę i (x), aby określić grupę, o którą chodzi:.Na przykład zgrupowane wyrażenie regularne (\d)([a-z]) znajdzie cztery dopasowania w następującym ciągu: 1a 2b 3c 4d.Ciąg zastępujący z$1 konwertuje ciąg na z1 z2 z3 z4> jest równoważny składni w Visual Studio 2010 {:z}([a-z]) dla zgrupowanych wyrażenia regularnego i z\1 dla ciągu zastępującego.

Comparing .NET Framework wyrażeń regularnych

Możesz konwertować regularne wyrażenia z wersji użytej w poprzedniej wersji Visual Studio na regularne wyrażenia .NET Framework korzystając z poniższej tabeli.

Cel

Nowy

Stary

Nowy przykład

Pasuje do dowolnego pojedynczego znaku (za wyjątkiem podziału wiersza)

.

.

a.o pasuje "aro" w "around" i "abo" w "about" ale nie "acro" w "across".

Dopasowuje zero lub więcej wystąpień poprzedniego wyrażenia (dopasowuje tak dużą liczbę znaków, jak to możliwe)

*

*

a*r pasuje "r" w "rack", "ar" w "ark", i "aar" w "aardvark"

Dopasowuje dowolny znak zero lub więcej razy (Symbol wieloznaczny *)

.*

.*

c.*e pasuje do “cke” w “racket”, “comme” w “comment”, i “code” w “code”

Dopasowuje jedno lub więcej wystąpień poprzedniego wyrażenia (dopasowuje tak dużą liczbę znaków, jak to możliwe)

+

+

e.+e pasuje do "eede" w "feeder"ale nie do "ee".

Dopasowuje dowolny znak jeden lub więcej razy (Symbol wieloznaczny?)

.+

.+

e. + e pasuje do "eede" "podajnika" ale nie "ee".

Dopasowuje zero lub więcej wystąpień poprzedniego wyrażenia (dopasowuje tak małą liczbę znaków, jak to możliwe)

*?

@

e.*?e pasuje do "ee" w "feeder" ale nie do "eede".

Dopasowuje jedno lub więcej wystąpień poprzedniego wyrażenia (dopasowuje tak małą liczbę znaków, jak to możliwe)

+?

#

e.+?e pasuje do "ente" i "erprise" w "enterprise", ale nie do całego słowa "enterprise".

Zakotwiczenia ciągu dopasowania do początku wiersza lub ciągu

^

^

^ samochód pasuje do słowa "samochód" tylko kiedy pojawia się na początku wiersza.

Zakotwiczenia ciągu dopasowania na końcu wiersza

\r?$

$

End\r?$ pasuje do "end" tylko wtedy, gdy pojawia się na końcu wiersza.

Pasuje do pojedynczego znaku w zestawie

[abc]

[abc]

b[abc] pasuje do "ba", "bb", i "bc".

Pasuje do dowolnego znaku w ciągu znaków

[a-f]

[x-y]

be[n-t] pasuje do "bet" w "between", "ben" w "beneath", i "bes" w "beside", ale nie "below".

Przechwytywanie i niejawne numerowanie wyrażenia zawartgoe w nawiasach

()

()

([a-z])X\1 pasuje do "aXa" i "bXb", ale nie "aXb". ". "\1" odnosi się do pierwszej grupy wyrażenie "[a-z]".

Unieważnienie dopasowania

(?!abc)

~(abc)

real (?!ity) pasuje do członu „real” w słowach „realty” i „really”, ale nie w „reality”. Znajdzie także drugi „prawdziwy” (ale nie pierwszy „prawdziwy”) w „realityreal”.

Pasuje do dowolnego znaku, który nie jest podany w danym zestawie znaków

[^abc]

[^abc]

być [^ n-t pasuje do "bef" w "przed", "beh" w "za" i "bel" w "poniżej", ale nie "poniżej".

Dopasowuje wyrażenie przed lub po symbolu.

|

|

(sponge|mud) bath pasuje "sponge bath" i "mud bath."

Uniknij znaku następującej odwróconej kreski ukośnej

\

\

\^ pasuje do znaku ^.

Określ liczbę wystąpień poprzedzającego znaku lub grupy

{x},, gdzie x jest liczbą wystąpień

\x, gdzie x jest liczbą wystąpień

x(ab){2}x odpowiada "xababx", a x(ab){2,3}x odpowiada "xababx" i "xabababx", ale nie "xababababx".

Dopasowuje tekst w klasie znaku Unicode, gdzie „X” jest numerem kodu Unicode.Aby uzyskać więcej informacji dotyczących klas znaków Unicode, zobacz

Właściwości znaków standardu Unicode 5.2.

\p{X}

:X

\p{lu} pasuje do "T" i "D" w "Thomas Doe".

Dopasuj granicę wyrazu

\b (poza klasą znak \b Określa, do granicy słowa i wewnątrz znak klasy określa backspace).

< i > określić początek i koniec wyrazu

\Bin pasuje do "w" w "wewnątrz" ale nie "pinto".

Dopasowuje koniec linii (czyli znak powrotu karetki, po którym występuje nowy wiersz).

\r?\n

\n

End\r?\nBegin pasuje do "Koniec" i "Początek" tylko wtedy, gdy "Koniec" jest ostatnim ciągiem w wierszu a "Początek" jest pierwszym ciągiem w następnym wierszu.

Pasuje do dowolnego znaku alfanumerycznego

\w

:a

a\wd pasuje do "add" i "a1d" ale nie do "a d".

Dopasowuje dowolny biały znak.

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

:b

Publiczny\sInterfejs pasuje do frazy „Interfejs publiczny”.

Pasuje do dowolnego znaku numerycznego

\d

:d

\d pasuje i "3" w "3456" "2" w 23 "i"1" w "1".

Dopasuj znak Unicode

\uXXXX gdzie XXXX określa wartość znaku Unicode.

\uXXXX gdzie XXXX określa wartość znaku Unicode

\u0065 pasuje do znaku "e".

Dopasuj identyfikator

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

:i

Dopasowuje "type1" ale nie &type1" lub "#define".

Dopasuj ciągi wewnątrz cudzysłowu

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

:q

Dopasowuje dowolny ciąg w pojedynczym lub podwójnym cudzysłowie.

Pasuje do liczby szesnastkowej

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

:h

Dopasowuje „0xc67f”, ale nie „0xc67fc67f”.

Pasuje do liczb całkowitych i dziesiętnych

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

:n

Dopasowuje „1,333”.

Zobacz też

Inne zasoby

Znajdowanie i zastępowanie tekstu