Poznámka
Přístup k této stránce vyžaduje autorizaci. Můžete se zkusit přihlásit nebo změnit adresáře.
Přístup k této stránce vyžaduje autorizaci. Můžete zkusit změnit adresáře.
Visual Studio používá .NET regulární výrazy k vyhledání a nahrazení textu.
Syntaxe regulárního výrazu
Následující tabulka obsahuje několik znaků regulárních výrazů, operátorů, konstrukcí a příkladů vzorů. Podrobnější referenční informace najdete v tématu jazyk regulárních výrazů.
Účel | Výraz | Příklad |
---|---|---|
Porovná libovolný jeden znak (s výjimkou konce řádku). Další informace naleznete v tématu Any character. | . |
a.o odpovídá "aro" v "around" a "abo" v "about", ale nikoli "acro" v "across" |
Porovná nula nebo více výskytů předchozího výrazu (odpovídá maximálnímu počtu znaků). Další informace naleznete v tématu Shoda nula nebo vícekrát. | * |
a*r odpovídá "r" v "racku", "ar" v "ark" a "aar" v "aardvark" |
Porovná libovolný znak nulakrát nebo vícekrát. | .* |
c.*e odpovídá "cke" ve slově "racket", "comme" ve slově "comment" a "code" ve slově "code". |
Porovná jeden nebo více výskytů předchozího výrazu (odpovídá co největšímu počtu znaků). Další informace naleznete v tématu Shoda jednou nebo vícekrát. | + |
e+d odpovídá "eed" v "feeder" a "ed" v "faded" |
Porovná libovolný znak jednou nebo vícekrát. | .+ |
e.+e odpovídá "eede" v "krmítku", ale nenajde žádné shody v "krmivu" |
Porovná nula nebo více výskytů předchozího výrazu (odpovídá co nejméně znakům). Další informace naleznete v tématu Shoda nula nebo vícekrát (líná shoda). | *? |
\w*?d odpovídá "fad" a "ed" ve slově "faded", ale ne celému slovu "faded" kvůli líné shodě. |
Najde jeden nebo více výskytů předchozího výrazu (s co nejmenším počtem znaků). Další informace naleznete v tématu Shoda jednou nebo vícekrát (líná shoda). | +? |
e\w+? odpovídá "ee" v "asleep" a "ed" v "faded", ale nenajde žádné shody v "fade". |
Ukotvěte řetězec shody k začátku řádku nebo řetězce | ^ |
^car odpovídá slovu "auto" pouze v okamžiku, kdy se zobrazí na začátku řádku. |
Ukotvěte řetězec shody na konec řádku | \r?$ |
car\r?$ se shoduje s "auto" pouze tehdy, když se objeví na konci řádku. |
Ukotvěte řetězec shody na konci souboru | $ |
car$ odpovídá "auto" pouze tehdy, když se objeví na konci souboru. |
Odpovídá libovolnému jednomu znaku v sadě | [abc] |
b[abc] odpovídá "ba", "bb" a "bc" |
Odpovídající libovolný znak z rozsahu znaků | [a-f] |
be[n-t] shody "bet" v "between", "ben" v "pod" a "bes" v "vedle", ale nenajde žádné shody v "níže" |
Zachycení a implicitní číslování výrazu obsaženého v závorkách | () |
([a-z])X\1 odpovídá "aXa" a "bXb", ale ne "aXb". "\1" odkazuje na první skupinu výrazů "[a-z]". Další informace naleznete v tématu Zachycovací skupiny a vzorů nahrazení. |
Zneplatnění zápasu | (?! abc) |
real(?!ity) odpovídá slovu "reálné" ve slovech "reálný" a "opravdový", ale ne ve slově "realita". Také nalezne druhé "reálné" (ale ne první "reálné") v "realitareál". |
Porovná libovolný znak, který není v dané sadě znaků. Pro více informací se podívejte na Skupina záporných znaků. | [^abc] |
be[^n-t] odpovídá "bef" v "before", "beh" v "behind" a "bel" v "below", ale nenajde žádné shody v "beneath" |
Vyberte buď výraz před symbolem, nebo výraz za ním. | | |
(sponge|mud) bath odpovídá "mytí houbou" a "bahenní koupel" |
Upravte znak následující za zpětným lomítkem | \ |
\^ odpovídá znaku ^ |
Zadejte počet výskytů předchozího znaku nebo skupiny. Další informace naleznete v tématu Přesná shoda nkrát. | {n}, kde n je počet výskytů |
x(ab){2}x odpovídá "xababx"x(ab){2,3}x odpovídá "xababx" a "xabababx", ale ne "xababababx" |
Shodující se text v kategorii Unicode. Další informace o třídách znaků Unicode naleznete v tématu Unicode Standard 15.0 Character Properties. | \p{X}, kde "X" je číslo Unicode. |
\p{Lu} odpovídá "T" a "D" v "Thomas Doe" |
Shoda s hranicemi slova | \b (Mimo třídu znaků \b určuje hranici slova a uvnitř třídy znaků \b určuje backspace.) |
\bin se shoduje s "in" ve "vnitřní", ale nenajde žádné shody ve "pinto" |
Načte konec řádku (to znamená návrat vozíku následovaný novým řádkem nebo pouze nový řádek). | \r?\n |
End\r?\nBegin odpovídá "End" a "Begin" pouze tehdy, když "End" je poslední řetězec na řádku a "Begin" je první řetězec na dalším řádku. |
Shoda s libovolným znakem v rámci slova | \w |
a\wd odpovídá "add" a "a1d", ale ne "a d" |
Najít libovolný bílý znak | \s |
Public\sInterface odpovídá frázi "Veřejné rozhraní" |
Porovná všechny desetinné číslice | \d |
\d odpovídá hodnotě 4 a 0 v souboru wd40. |
Příklad regulárního výrazu, který kombinuje některé operátory a konstrukce tak, aby odpovídaly šestnáctkovému číslu, je \b0[xX]([0-9a-fA-F]+)\b
. Tento výraz odpovídá "0xc67f", ale ne "0xc67g".
Spropitné
Většina řádků v operačních systémech Windows končí na "\r\n" (návrat na začátek řádku následovaný novým řádkem). Tyto znaky nejsou viditelné, ale jsou přítomné v editoru a předané službě regulárních výrazů .NET. Při práci se soubory z webu nebo z operačního systému jiného systému než Windows nezapomeňte zohlednit možnost, že používají nový řádek pouze pro přerušení řádku.
Zachytávání skupin a vzorů nahrazení
Skupina zachycení označuje dílčí výraz regulárního výrazu a zachycuje podřetězce vstupního řetězce. Zachycené skupiny můžete použít v samotném regulárním výrazu (například k vyhledání opakovaného slova) nebo v náhradním vzoru. Podrobné informace naleznete v tématu Seskupování konstrukcí v regulárních výrazech.
Pokud chcete vytvořit číslovanou skupinu zachycení, uzavřete dílčí výraz do závorek v rámci vzoru regulárního výrazu. Úlovky se očíslují automaticky zleva doprava na základě pozice otevíracích závorek v regulárním výrazu. Pokud chcete získat přístup k zachycené skupině, zvažte následující příklady:
V rámciregulárního výrazu: Použijte
\number
. Například\1
v regulárním výrazu(\w+)\s\1
odkazuje na první skupinu zachycení(\w+)
.V náhradním vzoru: Použijte
$number
. Například seskupený regulární výraz(\d)([a-z])
definuje dvě skupiny: první skupina obsahuje jednu desetinnou číslici a druhá skupina obsahuje jeden znak mezi a z. Výraz najde čtyři shody v následujícím řetězci: 1a 2b 3c 4d. Náhradní řetězecz$1
odkazuje pouze na první skupinu ($1
) a převede řetězec na z1 z2 z3 z4.
Následující obrázek ukazuje regulární výraz (\w+)\s\1
a náhradní řetězec $1
. Regulární výraz i vzor nahrazení odkazují na první skupinu zachycení, která je automaticky očíslována 1. Když zvolíte Nahradit všechny v dialogovém okně Rychlé nahrazení v sadě Visual Studio, budou z textu odebrána opakovaná slova.
Spropitné
V dialogovém okně Rychlé nahrazení nezapomeňte vybrat tlačítko Použít regulární výrazy nebo stiskněte Alt+E.
Pojmenované zachytávací skupiny
Místo toho, abyste se spoléhali na automatické číslování skupiny zachycení, můžete ji pojmenovat. Syntaxe pojmenované skupiny zachycení je (?<name>subexpression)
.
Pojmenované skupiny zachycení, jako jsou číslované skupiny zachycení, lze použít v rámci samotného regulárního výrazu nebo v náhradním vzoru. Pokud chcete získat přístup k pojmenované záchytné skupině, zvažte následující příklady:
V rámciregulárního výrazu: Použijte
\k<name>
. Například\k<repeated>
v regulárním výrazu(?<repeated>\w+)\s\k<repeated>
odkazuje na skupinu zachycení s názvemrepeated
a jejíž dílčí výraz je\w+
.V náhradním vzoru: Použijte
${name}
. Například${repeated}
.
Následující obrázek ukazuje regulární výraz (?<repeated>\w+)\s\k<repeated>
a náhradní řetězec ${repeated}
. Regulární výraz i vzor nahrazení odkazují na skupinu zachycení s názvem repeated
. Když zvolíte Nahradit všechny v dialogovém okně Rychlé nahrazení v sadě Visual Studio, budou z textu odebrána opakovaná slova.
Spropitné
Nezapomeňte vybrat tlačítko Použít regulární výrazy (nebo stiskněte Alt+E) v dialogovém okně Rychlé nahrazení.
Pro další informace o pojmenovaných zachycovacích skupinách viz Pojmenované odpovídající dílčí výrazy. Další informace o regulárních výrazech, které se používají v náhradních vzorech, naleznete v tématu Nahrazení v regulárních výrazech.
Příklady
Vzor | Popis |
---|---|
int ([_A-Za-z][_A-Za-z0-9]*) |
Porovnejte jednotlivé celočíselné definice. Identifikátory začínají jedním velkým nebo malým písmenem, za kterým následuje nula nebo více (označených * ) písmena nebo číslice. Identifikátor je zachycen pomocí vnějších závorek jako $1 . |
(private\|internal\|public)*\s*([\w]+\s+)int\s+([_A-Za-z][_A-Za-z0-9]*)\s+=\s+[+-]+(\d)+ |
Porovná celočíselné deklarace jazyka C#, které jsou inicializovány na celočíselné literály, zachytávají různé části, včetně úrovně přístupu, modifikátorů, jako jsou const nebo static , identifikátor a definovaná hodnota. Všimněte si použití \s+ alespoň pro jeden prázdný znak nebo \s* , pokud může nebo nemusí dojít k prázdným znakům. |
foreach\s*\(([\w\d]*)\s+([\w\d]*)\s+in\s+(.*)\) |
Porovnej počáteční čáru smyčky foreach . Literální závorky jsou uvozovány zpětným lomítkem (\ ). Různé skupiny jsou zachyceny jako $1 , $2 a $3 nezapsanými závorkami. |
#define\s+([_A-Za-z][_A-Za-z0-9]*) |
Odpovídá definici #define (bez hodnoty, pokud existuje). Definovaný token je uložen v $1 . |
#include\s+["<](.*)[">] |
Shoda zahrnuje zdrojový soubor C++. |
Související obsah
- Rychlý přehled : jazyk regulárních výrazů
- Najít a nahradit text