Constellation Constructs in Expressions Regular

Gruparea constructelor afișează părți ale expresiilor de expresie regulată și captează părți ale șirului șirului de intrare. Grupările de construcții pot fi utilizate în următoarele scopuri.

Se potrivește cu partea expresiei care se repetă în linia de intrare.

Aplicarea unui cuantificator pentru o parte a unei expresii cu elemente de limbaj multiple de expresii regulate. Pentru mai multe informații despre cuantificatori, consultați cuantifiatorii în expresii regulate.

Adăugarea unei părți a unei expresii în șir, care este returnată prin metodele Regex. Înlocuiți și potriviți. Rezultat.

Extragerea părților individuale ale unei expresii din proprietatea Match.Groups și prelucrarea acestora separat de întregul text.

Următorul tabel listează construcțiile de grupare susținute de motorul de expresie regulat .NET Framework și arată dacă acestea sunt capabile să fie capturate sau să nu fie asociate.

Unde name1 este grupul curent (parametrul opțional), name2 este grupul definit anterior, iar subexpresia este orice tip de expresie regulată valabilă. Această definiție de grup echilibrată elimină definiția numelui 2 și stochează intervalul dintre nume2 și nume1 în nume1. Dacă numele grupului 2 nu este definit, se efectuează o căutare inversă pentru potrivire. Deoarece ștergerea ultimului nume de definiție2 oferă acces la definiția anterioară a nume2. acest design vă permite să utilizați stiva de selecție pentru grupul name2 ca numărător pentru construcții imbricate, cum ar fi paranteze sau deschiderea și închiderea paranteze pătrate.

Definiția de grup echilibrată utilizează name2 ca stiva. Simbolul inițial al fiecărei structuri imbricate este plasat în grup și în colecția de grupuri. Atunci când se potrivește un caracter de închidere, caracterul de deschidere corespunzător este eliminat din grup, iar colecția Capturi este redusă cu un element. După potrivirea simbolurilor de deschidere și de închidere ale tuturor construcțiilor imbricate, numele grupului1 este gol.

Dacă modificați expresia regulată în exemplul de mai jos pentru a utiliza corespunzător de deschidere și de închidere de caractere de design încorporat, îl puteți utiliza pentru a gestiona constructe cele mai imbricate, cum ar fi expresii matematice sau linii de cod care pot conține mai multe apeluri de metode imbricate.

În exemplul următor, se utilizează o definiție de grup echilibrată pentru a se potrivi cu parantezele din stânga și din dreapta (<>) pe linia de intrare. Exemplul definește două grupuri numite, Deschidere și Închidere. care sunt utilizate ca stivă pentru a urmări perechile corespunzătoare de paranteze unghiulare. Fiecare colț de stânga selectat este plasat în colecția Open group. și fiecare colț dreptunghi selectat este plasat în colecția grupului Închidere. O definiție a grupului echilibrată face posibilă verificarea faptului că pentru fiecare suport pentru unghi de stânga există un suport corespunzător unghiului drept. În caz contrar, ultimul subset, (? (Open) (?!)). se calculează numai dacă grupul Deschis nu este gol (prin urmare toate construcțiile imbricate nu sunt închise). În cazul în care ultimul subpattern este evaluat, o comparație este o greșeală, pentru că subpattern (?!) Este o declarație de căutare negativă transmite-lățime zero, ceea ce returnează întotdeauna o eroare.

Următorul model de grupare aplică sau dezactivează parametrii specificați în partea de expresie:

În cazul în care o parte a expresiei este orice model valid al expresiei regulate. De exemplu, (? I-s :) dezactivează înregistrarea contabilă și modul cu o singură linie. Pentru mai multe informații despre parametrii integrați disponibili, consultați Opțiunile de expresie regulată.

Puteți specifica parametrii care se aplică întregii expresii regulate, mai degrabă decât părțile componente, utilizând constructorul din clasa System.Text.RegularExpressions. Regex sau metoda statică. De asemenea, puteți specifica parametrii construiți care sunt aplicați după un anumit punct în expresia regulată utilizând constructul de limbă (? Imnsx-imnsx).

Construcția parametrilor grupului nu este un grup invizibil. Aceasta înseamnă că, deși orice parte a liniei este capturată de o parte a expresiei. acesta nu este inclus în grupul capturat și nu este folosit pentru a popula obiectul GroupCollection.

De exemplu, expresie regulată \ b (ix :? D \ w +) \ s în exemplul următor utilizează un parametri built-in in grupul de proiectare, pentru a permite o comparație insensibili și ignoră lacunele în determinarea cuvintelor încep cu litera „d“. Definiția unei expresii regulate este prezentată în tabelul următor.

Coincidența trebuie să se termine la limita cuvântului.

În cazul în care o parte a expresiei este orice model de expresie regulată. Pentru potrivirea cu succes, o parte din expresie nu ar trebui să fie în linia de intrare din stânga poziției curente. Cu toate acestea, orice subrecurs care nu se potrivește cu subexpresia. care nu sunt incluse în rezultatul comparației.

Următorul exemplu compară data fiecărei săptămâni de săptămână (adică nu sâmbătă sau duminică).

Substring-urile mapate de grupul de captură a expresiei regulate sunt reprezentate de obiectele System.Text.RegularExpressions. Grup. care poate fi extras din obiectul System.Text.RegularExpressions. GroupCollection. returnate de proprietatea Match.Groups. Obiectul GroupCollection este populat după cum urmează:

Primul obiect al grupului din colecție (un obiect cu un index nul) reprezintă tot maparea.

Ultimul set de obiecte de grup reprezintă grupuri de captură numite. Acestea sunt specificate în ordinea în care sunt definite în expresia regulată, de la stânga la dreapta. Valoarea indexului primului grup de captură numită este una mai mare decât indexul, ultimul grup de captură fără nume. Dacă în expresia obișnuită nu există grupuri de captură fără nume, indicele primului grup de captură numit este egal cu unul.

Dacă se aplică un cuantificator grupului de capturare, proprietățile corespunzătoare ale grupului. Capture.Value și Capture.Index a obiectului Capture.Length reflectă ultima subrecurs alocat de grupul capturat. Puteți obține întregul set de substringuri alocate de grupuri cu cuantifiatori din obiectul CaptureCollection. returnate de către Grup.

Următorul exemplu prezintă relația dintre obiectele Group și Capture.

Articole similare