Tabel sumar pentru sintaxa expresiilor regulate

Expresiile regulate, cunoscute și sub denumirea de expresii pattern, sunt tipuri de modele textuale utilizate frecvent pentru căutarea, înlocuirea și controlul textului. Acestea includ în principal literele de la a la z și câteva caractere speciale. Domeniul de aplicare al expresiilor regulate este foarte larg, fiind inițial popularizat de Unix și ulterior folosit pe scară largă în Scala, PHP, C#, Java, C++, Objective-C, Perl, Swift, VBScript, Javascript, Ruby și Python. A învăța expresiile regulate este, de fapt, o formă de a învăța un mod de gândire flexibil și logic, esențial pentru controlul șirurilor de caractere prin metode simple și rapide.
Caractere regulate Descriere
\ Marchează următorul caracter ca fiind un caracter special, un caracter literal, o referire inversă sau un caracter de escape octal. De exemplu, "n" se potrivește cu caracterul "n". "\n" se potrivește cu un caracter de sfârșit de linie. Un șir "\\" se potrivește cu "\" și "\(" se potrivește cu "(".
^ Se potrivește cu poziția de început a șirului de intrare. Dacă proprietatea Multiline a obiectului RegExp este setată, ^ se potrivește și cu pozițiile imediat după "\n" sau "\r".
$ Se potrivește cu sfârșitul șirului de intrare. Dacă proprietatea Multiline a obiectului RegExp este setată, $ se potrivește și cu pozițiile imediat înainte de "\n" sau "\r".
* Se potrivește cu subexpresia precedentă de zero sau mai multe ori. De exemplu, "zo*" poate corespunde cu "z" și "zoo". * este echivalent cu {0,}.
+ Se potrivește cu subexpresia precedentă o dată sau mai multe ori. De exemplu, "zo+" se potrivește cu "zo" și "zoo", dar nu cu "z". + este echivalent cu {1,}.
? Se potrivește cu subexpresia precedentă de zero sau o dată. De exemplu, "do(es)?" poate corespunde cu "does" sau "do" în "does". ? este echivalent cu {0,1}.
{n} n este un număr întreg pozitiv. Se potrivește exact de n ori. De exemplu, "o{2}" nu se potrivește cu "Bob" pentru "o", dar se potrivește cu cele două "o" din "food".
{n,} n este un număr întreg pozitiv. Se potrivește de cel puțin n ori. De exemplu, "o{2,}" nu se potrivește cu "Bob" pentru "o", dar se potrivește cu toate "o" din "foooood". "o{1,}" este echivalent cu "o+", iar "o{0,}" este echivalent cu "o*".
{n,m} m și n sunt numere întregi pozitive, unde n<=m. Se potrivește cel puțin n ori și maxim m ori. De exemplu, "o{1,3}" se va potrivi cu primele trei "o" din "fooooood". "o{0,1}" este echivalent cu "o?". Vă rugăm să rețineți că nu trebuie să fie spații între virgulă și cele două numere.
? Când acest caracter urmează imediat după orice altă restricție ( *, +, ?, {n}, {n,}, {n,m}), modul de potrivire devine non-greedy. Modul non-greedy caută să facă cât mai puține potriviri de șiruri căutate, în timp ce modul greed face cât mai multe potriviri. De exemplu, pentru șirul "oooo", "o+?" se va potrivi cu un singur "o", în timp ce "o+" se va potrivi cu toate "o".
. Se potrivește cu orice caracter unic, cu excepția "\n". Pentru a se potrivi și cu "\n", folosiți un model ca "(.|\n)".
(pattern) Se potrivește cu pattern-ul și obține această corespondență. Corespondențele obținute pot fi obținute din colecția Matches, în VBScript folosind colecția SubMatches, în JScript folosind proprietățile $0…$9. Pentru a se potrivi cu parantezele, folosiți "\(" sau "\)".
(?:pattern) Se potrivește cu pattern-ul, dar nu obține rezultatul potrivirii, adică este o potrivire non-capturată, care nu se stochează pentru utilizarea ulterioară. Acesta este foarte util când folosim operatorul sau "(|)" pentru a combina părțile unui model. De exemplu "industr(?:y|ies)" este o expresie mai concisă decât "industry|industries".
(?=pattern) Predicție afirmativă în avans, se potrivește la începutul oricărui șir care se potrivește cu pattern-ul. Aceasta este o potrivire non-capturată, adică acea potrivire nu necesita să fie obținută pentru utilizare ulterioară. De exemplu, "Windows(?=95|98|NT|2000)" se va potrivi cu "Windows" în "Windows2000", dar nu cu "Windows" în "Windows3.1". Predicția nu consumă caractere, adică, după ce se face o potrivire, urmărirea va începe imediat după ultimul rezultat al potrivirii, în loc să înceapă din caracterele care conțin predicția.
(?!pattern) Predicție negativă în avans, se potrivește la începutul oricărui șir care nu se potrivește cu pattern-ul. Aceasta este o potrivire non-capturată, adică acea potrivire nu necesita să fie obținută pentru utilizare ulterioară. De exemplu "Windows(?!95|98|NT|2000)" se va potrivi cu "Windows" în "Windows3.1", dar nu cu "Windows" în "Windows2000". Predicția nu consumă caractere, adică, după ce se face o potrivire, urmărirea va începe imediat după ultimul rezultat al potrivirii, în loc să înceapă din caracterele care conțin predicția.
(?<=pattern) Predicție afirmativă invers, similar cu predicția afirmativă normală, doar că direcția este inversată. De exemplu, "(?<=95|98|NT|2000)Windows" se va potrivi cu "Windows" în "2000Windows", dar nu cu "Windows" în "3.1Windows".
(?<!pattern) Predicție negativă invers, similar cu predicția negativă normală, doar că direcția este inversată. De exemplu "(?<!95|98|NT|2000)Windows" se va potrivi cu "Windows" în "3.1Windows", dar nu cu "Windows" în "2000Windows".
x|y Se potrivește cu x sau y. De exemplu, "z|food" se va potrivi cu "z" sau "food". "(z|f)ood" se va potrivi cu "zood" sau "food".
[xyz] Conjunctie de caractere. Se potrivește cu oricare dintre caracterele conținute. De exemplu, "[abc]" se potrivește cu "a" în "plain".
[^xyz] Conjunctie de caractere negată. Se potrivește cu orice caracter care nu este conținut. De exemplu, "[^abc]" se potrivește cu "p" în "plain".
[a-z] Interval de caractere. Se potrivește cu orice caracter din intervalul specificat. De exemplu, "[a-z]" se potrivește cu orice literă mică din intervalul "a" la "z".
[^a-z] Interval de caractere negat. Se potrivește cu orice caracter care nu se află în intervalul specificat. De exemplu, "[^a-z]" se potrivește cu orice caracter care nu se află între "a" și "z".
\b Se potrivește cu o frontieră a unui cuvânt, adică poziția dintre un cuvânt și un spațiu. De exemplu, "er\b" se potrivește cu "er" în "never", dar nu se potrivește cu "er" în "verb".
\B Se potrivește cu o non-frontieră a unui cuvânt. "er\B" se potrivește cu "er" în "verb", dar nu se potrivește cu "er" în "never".
\cx Se potrivește cu un caracter de control specificat de x. De exemplu, \cM se potrivește cu un Control-M sau cu o revenire. Valoarea x trebuie să fie una dintre A-Z sau a-z. Altfel, c este considerat un caracter literal "c".
\d Se potrivește cu un caracter numeric. Este echivalent cu [0-9].
\D Se potrivește cu un caracter non-numeric. Este echivalent cu [^0-9].
\f Se potrivește cu un caracter de salt de pagină. Este echivalent cu \x0c și \cL.
\n Se potrivește cu un caracter de sfârșit de linie. Este echivalent cu \x0a și \cJ.
\r Se potrivește cu un caracter de întoarcere. Este echivalent cu \x0d și \cM.
\s Se potrivește cu orice caracter de spațiu, inclusiv spații, tab-uri, caractere de sfârșit de pagină etc. Este echivalent cu [ \f\n\r\t\v].
\S Se potrivește cu orice caracter non-spațiu. Este echivalent cu [^ \f\n\r\t\v].
\t Se potrivește cu un caracter de tab. Este echivalent cu \x09 și \cI.
\v Se potrivește cu un caracter de tab vertical. Este echivalent cu \x0b și \cK.
\w Se potrivește cu orice caracter de cuvânt, inclusiv caracterul de subliniere. Este echivalent cu "[A-Za-z0-9_]".
\W Se potrivește cu orice caracter care nu este un caracter de cuvânt. Este echivalent cu "[^A-Za-z0-9_]".
\xn Se potrivește cu n, unde n este o valoare de escape hexazecimală. Valoarea de escape hexazecimală trebuie să fie formată din exact două cifre. De exemplu, "\x41" se potrivește cu "A". "\x041" este echivalent cu "\x04&1". Expresiile regulate pot utiliza coduri ASCII.
\num Se potrivește cu num, unde num este un număr întreg pozitiv. Face referire la rezultatele obținute. De exemplu, "(.)\1" se potrivește cu două caractere identice consecutive.
\n Indică o valoare de escape octală sau o referire inversă. Dacă \n este precedat de cel puțin n subexpresii obținute, atunci n reprezintă o referire inversă. Altfel, dacă n este o cifră octală (0-7), atunci n reprezintă o valoare de escape octală.
\nm Indică o valoare de escape octală sau o referire inversă. Dacă \nm este precedată de cel puțin nm subexpresii obținute, atunci nm este o referire inversă. Dacă \nm este precedat de cel puțin n obținute, atunci n este un referință înapoi urmată de caracterul m. Dacă nici una dintre condițiile anterioare nu este îndeplinită și ambele n și m sunt cifre octale (0-7), atunci \nm se va potrivi cu valoarea de escape octală nm.
\nml Se va potrivi cu valoarea de escape octală nml, dacă n este o cifră octală (0-3) și m și l sunt cifre octale (0-7).
\un Se primește n, unde n este un caracter Unicode reprezentat prin patru cifre hexazecimale. De exemplu, \u00A9 se potrivește cu simbolul de copyright (©).
Expresii regulate uzuale
Nume utilizator /^[a-z0-9_-]{3,16}$/
Parolă /^[a-z0-9_-]{6,18}$/
Parolă 2 (?=^.{8,}$)(?=.*\d)(?=.*\W+)(?=.*[A-Z])(?=.*[a-z])(?!.*\n).*$ (formată din cifre/litere mari/litere mici/semne de punctuație, toate patru necesare, mai mult de 8 caractere)
Valoare hexazecimală /^#?([a-f0-9]{6}|[a-f0-9]{3})$/
Email /^([a-z0-9_\.-]+)@([\da-z\.-]+)\.([a-z\.]{2,6})$/
/^[a-z\d]+(\.[a-z\d]+)*@([\da-z](-[\da-z])?)+(\.{1,2}[a-z]+)+$/ sau \w+([-+.]\w+)*@\w+([-.]\w+)*\.\w+([-.]\w+)*
URL /^(https?:\/\/)?([\da-z\.-]+)\.([a-z\.]{2,6})([\/\w \.-]*)*\/?$/ sau [a-zA-z]+://[^\s]*
Adresă IP /((2[0-4]\d|25[0-5]|[01]?\d\d?)\.){3}(2[0-4]\d|25[0-5]|[01]?\d\d?)/
/^(?:(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.){3}(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)$/ sau ((2[0-4]\d|25[0-5]|[01]?\d\d?)\.){3}(2[0-4]\d|25[0-5]|[01]?\d\d?)
Etichete HTML /^<([a-z]+)([^<]+)*(?:>(.*)<\/\1>|\s+\/>)$/ sau<(.*)(.*)>.*<\/\1>|<(.*) \/>
Ștergere cod\\comentarii (?<!http:|\S)//.*$
Se potrivește cu caractere cu două byte-uri (inclusiv caractere chinezești) [^\x00-\xff]
Caractere chinezești (caractere) [\u4e00-\u9fa5]
Intervalul de caractere chinezești în codurile Unicode /^[\u2E80-\u9FFF]+$/
Caractere chinezești și semne de punctuație cu lățime întreagă (caractere) [\u3000-\u301e\ufe10-\ufe19\ufe30-\ufe44\ufe50-\ufe6b\uff01-\uffee]
Dată (an-lună-zi) (\d{4}|\d{2})-((0?([1-9]))|(1[1|2]))-((0?[1-9])|([12]([1-9]))|(3[0|1]))
Dată (lună/zi/an) ((0?[1-9]{1})|(1[1|2]))/(0?[1-9]|([12][1-9])|(3[0|1]))/(\d{4}|\d{2})
Timp (ore:minute, 24 de ore) ((1|0?)[0-9]|2[0-3]):([0-5][0-9])
Număr de telefon fix din China continentală (\d{4}-|\d{3}-)?(\d{8}|\d{7})
Număr de telefon mobil din China continentală 1\d{10}
Cod poștal din China continentală [1-9]\d{5}
Număr de identitate din China continentală (15 sau 18 caractere) \d{15}(\d\d[0-9xX])?
Număr întreg non-negativ (număr pozitiv sau zero) \d+
Număr întreg pozitiv [0-9]*[1-9][0-9]*
Număr întreg negativ -[0-9]*[1-9][0-9]*
Număr întreg -?\d+
Număr zecimal (-?\d+)(\.\d+)?
Linie goală \n\s*\r sau \n\n(editplus) sau ^[\s\S ]*\n
Număr QQ [1-9]\d{4,}
Cuvinte care nu conțin abc \b((?!abc)\w)+\b
Se potrivește cu caracterele goale de la început și de la sfârșit ^\s*|\s*$
Editați frecvent
Iată câteva înlocuiri pentru caracterele chinezești speciale (editplus)
^[0-9].*\n
^[^第].*\n
^[习题].*\n
^[\s\S ]*\n
^[0-9]*\.
^[\s\S ]*\n
<p[^<>*]>
href="javascript:if\(confirm\('(.*?)'\)\)window\.location='(.*?)'"
<span style=".[^"]*rgb\(255,255,255\)">.[^<>]*</span>
<DIV class=xs0>[\s\S]*?</DIV>

Referință rapidă la sintaxa expresiilor regulate - Tehnici și sintaxă uzuală în expresiile regulate

Expresiile regulate sunt un instrument puternic pentru procesarea textului, iar această pagină vă oferă o referință rapidă pentru sintaxa expresiilor regulate, ajutându-vă să înțelegeți rapid sintaxa de bază a expresiilor regulate, modificatorii, subexpresiile, modul greedy și modul non-greedy etc.

Sintaxa de bază a expresiilor regulate

Expresiile regulate sunt folosite pentru a descrie regulile pattern-ului șirului, iar sintaxa de bază comună include:

Modificatori uzuali ai expresiilor regulate

Modificatorii expresiilor regulate sunt utilizați pentru a schimba regulile de potrivire ale expresiilor regulate, cei mai comuni fiind:

Modul greedy și modul non-greedy

În expresiile regulate, numărul de potriviri este în mod implicit greedy, ceea ce înseamnă că va căuta să potrivească cât mai multe caractere. Modul non-greedy se poate utiliza prin adăugarea unui semn de întrebare ? după numărul de potrivire, exemplul fiind următorul:

Subexpresiile și gruparea acestora

Subexpresiile din expresiile regulate sunt definite prin paranteze (( )) și sunt folosite frecvent pentru extragerea părților care se potrivesc. Gruparea se face folosind simbolul "|". De exemplu:

Căutare rapidă în expresiile regulate

Iată o căutare rapidă pentru expresiile regulate uzuale:

Funcționalitate Expresia regulată
Se potrivește cu numere \d
Se potrivește cu non-numerice \D
Se potrivește cu litere [a-zA-Z]
Se potrivește cu orice caracter .
Se potrivește cu caractere de spațiu \s

Scenarii de aplicare a expresiilor regulate

Expresiile regulate sunt utilizate pe scară largă în următoarele scenarii:

Sfaturi pentru a învăța expresiile regulate

Utilizați acum referința rapidă pentru sintaxa expresiilor regulate pentru a vă crește eficiența la scrierea expresiilor regulate și pentru a îmbunătăți abilitățile de prelucrare a textului!

Urmele dumneavoastră:
Alegeți limba