Megosztás a következőn keresztül:


Reguláris kifejezések használata a Visual Studióban

A Visual Studio .NET-reguláris kifejezéseket a szöveg megkereséséhez és cseréjéhez.

Reguláris kifejezés szintaxisa

Az alábbi táblázat néhány reguláris kifejezési karaktert, operátort, szerkezetet és mintamintát tartalmaz. A teljesebb referenciát a Reguláris kifejezésnyelvcímű témakörben talál.

Cél Kifejezés Példa
Egyezzen meg bármely egyetlen karakterrel (a sortörés kivételével). További információ: Bármely karakter. . a.o "aro" megegyezik az "around"-ban lévővel és az "abo"-val az "about"-ban, de nem az "acro"-val az "across"-ban
Az előző kifejezés nulla vagy több előfordulásának egyezése (a lehető legtöbb karakter egyeztetése). További információ: Nulla vagy több alkalommal egyezik. * a*r megegyezik az „r”-rel a „rack”-ben, az „ar”-rel az „ark”-ban, és az „aar”-ral az „aardvark”-ban.
Egyezzen meg egy tetszőleges karakter nullával vagy több alkalommal. .* c.*e a "cke" a "racket", a "comme" a "comment" és a "code" (kód) kifejezésre illeszkedik.
Egyezzen az előző kifejezés egy vagy több előfordulásával (a lehető legtöbb karaktert egyezzen meg). További információ: Egyezés egy vagy több előfordulás esetén. + e+d megegyezik az "eed" mintával a "feeder"-ben és az "ed" mintával a "faded" (elhalványult) szóban.
Egyező karakter egy vagy több alkalommal. .+ e.+e "eede" egyezést talál a "feeder"-ben, de nem talál egyezést a "feed"-ben
Az előző kifejezés nulla vagy több előfordulását illesztjük (a lehető legkevesebb karakterrel). További információ: Nulla vagy több alkalommal (lusta egyezés). *? \w*?d egyezik a "fad" és az "ed" részletekre a "faded" szövegben, de nem az egész "faded" szóra, a lusta egyezés miatt.
Egyeztesse az előző kifejezés egy vagy több előfordulását (a lehető legkevesebb karakterrel próbáljon egyezni). További információért lásd: Egyezés egy vagy több alkalommal (halogató egyezés). +? e\w+? egyezést talál az "ee" kifejezésben, mint az "asleep" és az "ed" az "faded", de nem talál egyezést a "fade" kifejezésben.
Rögzítse az egyező karaktersort egy sor vagy karaktersor elejéhez ^ ^car csak akkor egyezik az "autó" szóval, ha egy sor elején jelenik meg
Rögzítse az egyező sztringet egy sor végéhez \r?$ car\r?$ csak akkor egyezik meg az "autóval", ha egy sor végén jelenik meg
A találati sztring rögzítése a fájl végéhez $ car$ csak akkor egyezik meg az "autóval", ha az a fájl végén jelenik meg
Egy készlet egyetlen karakterének egyeztetése [abc] b[abc] a "ba", a "bb" és a "bc"
Karaktertartomány bármely karakterének illesztése [a-f] be[n-t] egyezik a "bet" a "between"-ben, a "ben" a "beneath"-ben és a "bes" a "beside"-ban, de nem talál találatokat a "below"-ban.
Zárójelben lévő kifejezés rögzítése és implicit számozása () Az ([a-z])X\1 illeszkedik az "aXa" és a "bXb" mintákra, de az "aXb"-re nem. A "\1" az első "[a-z]" kifejezéscsoportra utal. További információ: Csoportok és csereminták rögzítése.
Egyezés érvénytelenítése (?! abc) real(?!ity) megegyezik a "realty" és a "really" kifejezésben, de a "valóságban" nem. Azt is megtalálja a második "valós" (de nem az első "valós") a "realityreal".
Egyezzen meg minden olyan karakterrel, amely nem szerepel egy adott karakterkészletben. További információ: Negatív karaktercsoport. [^abc] A "be[^n-t]" illeszkedik a "before" "bef" részéhez, a "behind" "beh" részéhez és a "below" "bel" részéhez, de nem talál egyezést a "beneath" szóban.
Egyeztesse a szimbólum előtti vagy utáni kifejezést | (sponge|mud) bath "szivacsfürdő" és "sárfürdő" egyezik
A fordított perjelet követő karakter megkerülése \ \^ a ^ karakterrel egyezik meg
Adja meg az előző karakter vagy csoport előfordulásainak számát. További információért lásd: Pontosan n-szer egyezik. {n}, ahol az "n" az előfordulások száma x(ab){2}x egyezik a "xababx" értékkel
x(ab){2,3}x megegyezik a "xababx" és a "xabababx", de nem a "xababababx"
A Unicode-kategóriaszövegének egyeztetése. További információ a Unicode-karakterosztályokról: Unicode Standard 15.0 Karaktertulajdonságok. \p{X}, ahol az "X" a Unicode-szám. \p{Lu} megfelel a "T" és "D" betűknek a "Thomas Doe" névben
Keresd meg a szóhatárt \b (Egy karakterosztályon kívül \b egy szóhatárt határoz meg, egy karakterosztályon belül pedig \b a háttérteret.) \bin egyezést talál az "in" szóelemre a "belső" kifejezésben, de nem talál egyezést a "pinto" szóban.
Egy vonaltörés egyeztetése (vagyis egy kocsivisszatér, amelyet egy új sor követ, vagy csak egy új sor) \r?\n End\r?\nBegin csak akkor illeszkedik a "End" és a "Begin" karaktersorozathoz, ha az "End" a sor utolsó sztringje, a "Begin" pedig a következő sor első sztringje.
Bármely szó karakterének \w a\wd egyezik az "add" és az "a1d" karakterláncokkal, de nem az "a d"-vel.
Nem szójelek egyeztetése \W a\Wd egyezik az "a d"-sel, de nem "és"
Egyezzen meg bármilyen szóköz karakterrel \s Public\sInterface a "Nyilvános felület" kifejezésre illeszkedik
Egyezés a nem szóköz karakterrel \S \S+ "end", "A11" vagy "end?".
Bármely tizedesjegyű karakter \d \d egyezik a "4" és a "0" értékkel a "wd40" kifejezésben
Bármely nem számjegyű karakter egyeztetése \D \D a "w" és a "d" egyezés a "wd40" szövegben

A hexadecimális számnak megfelelő operátorokat és szerkezeteket egyesítő reguláris kifejezés például \b0[xX]([0-9a-fA-F]+)\b. Ez a kifejezés megegyezik a "0xc67f" kifejezéssel, de a "0xc67g" kifejezéssel nem.

Borravaló

Windows operációs rendszerekben a legtöbb sor "\r\n" végződik (egy kocsivissza, amelyet egy új sor követ). Ezek a karakterek nem láthatók, de megtalálhatók a szerkesztőben, és átadva a .NET reguláris kifejezési szolgáltatásnak. Ha webes vagy nem Windows rendszerű operációs rendszerből származó fájlokkal foglalkozik, ügyeljen arra, hogy az új sorokat csak egy sortöréshez használják.

Csoportok és csereminták rögzítése

A rögzítési csoport egy reguláris kifejezés alkifejezését jelöli, és rögzíti a bemeneti sztringek egy részsztringét. A rögzített csoportokat használhatja magában a reguláris kifejezésben (például egy ismétlődő szó kereséséhez), vagy egy helyettesítő mintában. További információ: Csoportosítási szerkezetek reguláris kifejezésekben.

Számozott rögzítési csoport létrehozásához a subexpressziót zárójelekkel kell körülvenni a reguláris kifejezésmintában. A rögzítéseket a rendszer automatikusan megszámozza balról jobbra a reguláris kifejezés nyitó zárójelének pozíciója alapján. A rögzített csoport eléréséhez vegye figyelembe az alábbi példákat:

  • A reguláris kifejezésen belül: Használja a \number. A reguláris kifejezésben például \1(\w+)\s\1 az első rögzítési csoportra (\w+)hivatkozik.

  • Helyettesítő mintában: Használja a $number. A csoportosított reguláris kifejezés (\d)([a-z]) például két csoportot határoz meg: az első csoport egyetlen tizedesjegyet tartalmaz, a második csoport pedig egyetlen karaktert tartalmaz és zközött. A kifejezés négy egyezést talál a következő sztringben: 1a 2b 3c 4d. A helyettesítő karakterlánc z$1 csak az első csoportra hivatkozik ($1), és átalakítja a karakterláncot z1 z2 z3 z4.

Az alábbi képen egy reguláris kifejezés (\w+)\s\1 és egy helyettesítő karakterlánc $1látható. A reguláris kifejezés és a csereminta egyaránt hivatkozik az első automatikusan számozott rögzítési csoportra. Ha a Visual Studio Gyors csere párbeszédpaneljén az összes cseréje lehetőséget választja, az ismétlődő szavak eltávolításra kerülnek a szövegből.

Képernyőkép a Gyors csere funkcióról, amelyen egy számozott rögzítési csoport látható a Visual Studióban.

Borravaló

A Gyors csere párbeszédpanelen jelölje ki a Reguláris kifejezések használata gombot, vagy nyomja le Alt+Ebillentyűt.

Elnevezett rögzítési csoportok

A rögzítési csoport automatikus számozása helyett nevet adhat neki. Egy elnevezett rögzítési csoport szintaxisa (?<name>subexpression).

Az elnevezett rögzítési csoportok, például a számozott rögzítési csoportok a reguláris kifejezésben vagy egy helyettesítő mintában használhatók. A névvel ellátott rögzítési csoport eléréséhez vegye figyelembe a következő példákat:

  • A reguláris kifejezésen belül: Használja a \k<name>. A reguláris kifejezésben \k<repeated>(?<repeated>\w+)\s\k<repeated> például a repeated nevű rögzítési csoportra hivatkozik, amelynek alkifejezése \w+.

  • Helyettesítő mintában: Használja a ${name}. Például ${repeated}.

Az alábbi képen egy reguláris kifejezés (?<repeated>\w+)\s\k<repeated> és egy helyettesítő karakterlánc ${repeated}látható. A reguláris kifejezés és a helyettesítő minta egyaránt hivatkozik a repeatednevű rögzítési csoportra. Ha a Visual Studio Gyors csere párbeszédpaneljén az összes cseréje lehetőséget választja, az ismétlődő szavak eltávolításra kerülnek a szövegből.

Rövid csere képernyőképe, amelyen egy elnevezett rögzítési csoport látható a Visual Studióban.

Borravaló

Jelölje ki a Normál kifejezések használata gombot (vagy nyomja le Alt+E) gombot a Gyorscsere párbeszédpanelen.

A névvel ellátott rögzítési csoportokról további információt Elnevezett egyező alkifejezésekcímű témakörben talál. A helyettesítő mintákban használt reguláris kifejezésekről további információt A reguláris kifejezések helyettesítéseicímű témakörben talál.

Példák

Minta Leírás
int ([_A-Za-z][_A-Za-z0-9]*) Egyezik az egy egész szám definícióival. Az azonosítók egy kis- vagy nagybetűvel kezdődnek, amelyet nulla vagy több (*) betű vagy szám követ. A külső zárójelek $1-ként rögzítik az azonosítót.
(private\|internal\|public)*\s*([\w]+\s+)int\s+([_A-Za-z][_A-Za-z0-9]*)\s+=\s+[+-]+(\d)+ Egyezzen a C# egész szám deklarációkkal, amelyek egész számértékekre vannak inicializálva, rögzítve a különböző részeket, beleértve a hozzáférési szintet, a módosítókat (például const vagy static), az azonosítót és a megadott értéket. Vegye figyelembe, hogy a \s+ használata legalább egy szóköznél szükséges, míg a \s* használata megfelelő, ha a szóköz előfordulhat vagy nem.
foreach\s*\(([\w\d]*)\s+([\w\d]*)\s+in\s+(.*)\) Egy foreach hurok nyitóvonalának felel meg. A literális zárójeleket fordított perjellel (\) elkerülik. A különböző csoportokat a rendszer $1, $2és $3 a zárójelek nélkül rögzíti.
#define\s+([_A-Za-z][_A-Za-z0-9]*) Megfelel #define definícióknak (érték nélkül, ha van ilyen). A definiált token $1-ban van tárolva.
#include\s+["<](.*)[">] Egyezés tartalmaz egy C++ forrásfájlban.