Sdílet prostřednictvím


Používání regulárních výrazů v sadě Visual Studio

Visual Studio použije regulární výrazy rozhraní .NET Framework k hledání a nahrazení textu.V aplikaci Visual Studio 2010 a starších verzích využívala aplikace Visual Studio v okně Najít a nahradit vlastní syntaxi regulárního výrazu.Toto téma vysvětluje, jak převést některé častěji používané vlastní symboly regulárních výrazů ve verzích .NET.

Tip

V operačních systémech Windows většina řádků končí parametrem „\r\n“ (zalomení řádku a nový řádek).Tyto znaky se nezobrazí, ale jsou k dispozici v editoru a jsou předány službě regulárních výrazů rozhraní .NET.

Další informace naleznete v tématu .NET Framework – regulární výrazy.

Tip

Informace o formátování regulárních výrazů, které se používají ve vzorcích pro nahrazení v Nahrazení v regulárních výrazech.Chcete-li použít číslovanou zachycenou skupinu, syntaxe je $1 k určení číslované skupiny a (x) k určení dotazované skupiny:.Například seskupený regulární výraz (\d)([a-z]) najde čtyři shody v následujícím řetězci: 1a 2b 3c 4d.Náhradní řetězec z$1 převede tento řetězec na z1 z2 z3 z4> Ekvivalentní syntax v sadě Visual Studio 2010 je {:z}([a-z]) pro seskupený regulární výraz a z\1 pro náhradní řetězec.

Porovnávání regulárních výrazů rozhraní .NET Framework

Regulární výrazy můžete převést z verze používané v předchozích verzích aplikace Visual Studio na regulární výrazy pro rozhraní .NET Framework pomocí následující tabulky.

Účel

Nový

Starý

Nový příklad

Odpovídá libovolnému jednomu znaku (kromě zalomení řádku)

.

.

a.o odpovídá „aro“ ve slově „around“ a „abo“ ve slově „about“, ale ne „acro“ ve slově „across“.

Odpovídá žádnému nebo více výskytům předcházejícího výrazu (odpovídá co nejvíce znakům)

*

*

a*r odpovídá „r“ ve slově „rack“, „ar“ ve slově „ark“ a „aar“ ve slově „aardvark“

Odpovídá jakémukoli znaku opakujícím se nula nebo vícekrát (zástupný znak *)

.*

.*

c.*e odpovídá "cke" ve slově "racket", "comme" ve slově "comment" a "code" ve slově "code"

Odpovídá jednomu nebo více výskytům předcházejícího výrazu (odpovídá co nejvíce znakům)

+

+

e.+e odpovídá "eede" ve slově "feeder", ale ne "ee".

Odpovídá jakémukoli znaku opakujícím se jednou nebo vícekrát (zástupný znak ?)

.+

.+

e. + e odpovídá "eede" v "feeder" ale ne "ee".

Odpovídá žádnému nebo více výskytům předcházejícího výrazu (odpovídá co nejméně znakům)

*?

@

e.*?e odpovídá "ee" ve slově "feeder", ale ne "eede".

Odpovídá jednomu nebo více výskytům předcházejícího výrazu (odpovídá co nejméně znakům)

+?

#

e.+?e odpovídá "ente" a "erprise" ve slově "enterprise", ale ne celému slovu "enterprise".

Ukotvení řetězce shody na začátek řádku nebo řetězce

^

^

^car odpovídá slovu „car“ pouze, pokud se nachází na začátku řádku.

Ukotvení řetězce shody na konec řádku

\r?$

$

End\r?$ odpovídá "end" pouze pokud je zobrazeno na konci řádku.

Odpovídá libovolnému jednomu znaku v sadě

[abc]

[abc]

b[abc] odpovídá „ba“, „bb“ a „bc“.

Odpovídá libovolnému znaku v zadaném rozsahu znaků

[a-f]

[x-y]

be[n-t] odpovídá „bet“ ve slově „between“, „ben“ ve slově „beneath“ a „bes“ ve slově „beside“, avšak ne slovu „below“.

Zachytit a implicitně očíslovat výraz v závorkách

()

()

([a-z])X\1 se shoduje s „aXa“ a „bXb“, ale nikoli „aXb“. ". „\1“ se vztahuje k první skupině výrazů „[a-z]“.

Znehodnotit shodu

(?!abc)

~(abc)

real (?!ity) vyhledá text „real“ ve slově „realty“ a „really“, ale ne „reality“. Najde také druhý výraz „real“ (nikoli však první „real“) v „realityreal“.

Odpovídá libovolnému znaku, který není v dané sadě znaků

[^abc]

[^abc]

be[^n-t] odpovídá „bef“ ve slově „before“, „beh“ ve slově „behind“ a „bel“ ve slově „below“, avšak ne slovu „beneath“.

Odpovídá výrazu před nebo jednomu za symbolem.

|

|

(relaxační|bahenní) koupel odpovídá výrazům „relaxační koupel“ a „bahenní koupel“.

Řídicí sekvence pro znak následující po zpětném lomítku

\

\

\^ odpovídá znaku ^.

Určení počtu výskytů předchozího znaku nebo skupiny

{x}, kde x je počet výskytů

\x, kde x je počet výskytů

x(AB){2}x odpovídá „xababx“ a x(ab){2,3}x odpovídá „xababx“ a „xabababx“ ale ne „xababababx“.

Odpovídá textu ve třídě znaků Unicode, kde „X“ je číslo sady Unicode.Další informace o třídách znaků Unicode naleznete v tématu

Vlastnosti znaků Unicode Standard 5.2.

\p{X}

:X

\p{Lu} odpovídá „T“ a „D“ v „Thomas Doe“.

Porovnat hranici slova

\b (Mimo třídu znaků určuje \b hranici slova a uvnitř třídy znaků určuje znak backspace).

< a > ukazují na začátek a konec slova

\bin odpovídá „in“ v „inside“ ale ne „pinto“.

Odpovídá konci řádku (tj. zalomení řádku a nový řádek).

\r?\n

\n

End\r?\nBegin odpovídá "End" a "Begin" pouze, pokud je "End" posledním řetězcem v řádku a "Begin" je první řetězec v následujícím řádku.

Odpovídá libovolnému alfanumerickému znaku

\w

:a

a\wd odpovídá „add“ a „a1d“, avšak ne „a d“.

Odpovídá jakémukoli prázdnému znaku.

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

:b

Public\sInterface odpovídá slovnímu spojení „Veřejné rozhraní“.

Odpovídá libovolné číslici

\d

:d

\d odpovídá „3“ v „3456“, „2“ ve „23“ a „1“ v „1“.

Porovnat znak Unicode

\uXXXX kde XXXX určuje hodnotu znaku Unicode.

\uXXXX kde XXXX určuje hodnotu znaku Unicode

\u0065 odpovídá znaku „e“.

Odpovídá identifikátoru

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

:i

Odpovídá "type1" ale ne &type1" nebo "#define".

Odpovídá řetězci v uvozovkách

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

:q

Odpovídá jakémukoli řetězci v jednoduchých nebo dvojitých uvozovkách.

Odpovídá číslici v šestnáctkové soustavě

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

:h

Odpovídá „0xc67f“, ale ne „0xc67fc67f“.

Odpovídá celým nebo desetinným číslům

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

:n

Odpovídá "1.333".

Viz také

Další zdroje

Hledání a nahrazení textu