Sintaxa expresiilor regulate (posix)

Structura expresiilor regulate POSIX este oarecum similară cu structura expresiilor matematice tipice - diferite elemente (operatori) se combină între ele și formează expresii mai complexe. Cu toate acestea, este un sentiment de unire a elementelor care fac expresii regulate un instrument atât de puternic și expresiv. Oportunitățile nu se limitează la găsirea unui text literal (de exemplu, un anumit cuvânt sau număr); Puteți căuta șiruri de caractere cu semantică diferită, dar o sintaxă similară - de exemplu, toate etichetele HTML din fișier.

Cea mai simplă expresie regulată coincide cu un simbol literal - de exemplu, expresia g se potrivește în linii precum g, haggle și sac. Expresia obținută prin combinarea mai multor simboluri literale coincide cu aceleași reguli - de exemplu, secvența gan se potrivește cu orice șir care conține aceste caractere (de exemplu, bandă, organizație sau Reagan).

Operatorul | (bară verticală) verifică potrivirea uneia sau mai multor alternative. De exemplu, expresia regulată php | zend verifică linia pentru php sau zend.

Paranteze pătrate

Parantezele pătrate ([]) au un înțeles special în contextul expresiilor regulate - înseamnă "orice caracter din parantezele din paranteze". Spre deosebire de expresia regulată php, care corespunde tuturor liniilor care conțin textul php, expresia [php] se potrivește cu orice șir care conține caracterele p sau h. Parantezele pătrate joacă un rol important în lucrul cu expresii regulate, deoarece în procesul de căutare apare adesea problema găsirii de caractere dintr-un anumit interval. Mai jos sunt câteva intervale frecvent utilizate:

  • [0-9] - se potrivește cu orice cifră zecimală de la 0 la 9;
  • [a-z] - se potrivește cu orice caracter minuscul de la a la z;
  • [A-Z] - se potrivește cu orice caracter mare de la A la Z;
  • [a -Z] - se potrivește cu orice caractere minuscule sau majuscule de la a la Z.

Desigur, intervalele enumerate mai sus demonstrează doar un principiu general. De exemplu, puteți utiliza intervalul [0-3] pentru a desemna orice cifră zecimală de la 0 la 3 sau intervalul [b-v] pentru a desemna orice caracter de tip minuscule de la b la v. Pe scurt, intervalele sunt complet arbitrare.

cuantificatori

Există o clasă specială de simboluri de serviciu care indică numărul de repetări ale unui singur caracter sau o construcție închisă în paranteze pătrate. Aceste simboluri de serviciu (+, * și) se numesc cuantificatori. Principiul acțiunii lor este cel mai simplu explicat prin exemple:

  • p + denotă unul sau mai multe simboluri p în succesiune;
  • p * înseamnă zero sau mai multe dintre simbolurile p care se află într-un rând;
  • p? înseamnă zero sau un caracter p;
  • p înseamnă două simboluri p, în picioare succesiv;
  • p înseamnă două până la trei simboluri p, în picioare succesiv;
  • p înseamnă două sau mai multe simboluri p succesiv.

Alte simboluri de serviciu

Simbolurile de servicii $ și ^ coincid nu cu simbolurile, ci cu anumite poziții într-o linie. De exemplu, expresia p $ înseamnă un șir care se termină cu simbolul p, iar expresia ^ p este un șir care începe cu simbolul p.

  • Construcția [^ a-zA-Z] coincide cu orice caracter care nu este inclus în intervalele specificate (a-z și A-Z).
  • Simbolul de serviciu (punct) înseamnă "orice caracter". De exemplu, expresia p.p coincide cu simbolul p, urmată de un simbol arbitrar urmat de simbolul p.

Combinația simbolurilor de servicii duce la apariția unor expresii mai complexe. Să luăm în considerare câteva exemple:

  • ^. $ - orice șir care conține exact două caractere;
  • (. *) - o secvență arbitrară de caractere între <Ь> și (probabil etichete HTML pentru afișarea textului îngroșat);
  • p (hp) * este caracterul p, urmat de zero și mai multe instanțe ale secvenței hp (de exemplu, phphphp).

Uneori este necesar să găsiți simboluri de utilitate în șiruri de caractere, în loc să le folosiți în contextul special descris. Pentru a face acest lucru, caracterele de serviciu sunt scăpate cu un backslash (\). De exemplu, pentru a căuta o sumă monetară în dolari, puteți utiliza expresia \ $ [0-9] +, adică "un semn de dolar urmat de una sau mai multe cifre zecimale". Luați notă în spate înainte de $. Meciurile posibile pentru această expresie regulată sunt $ 42, $ 560 și $ 3.

Intervale standard de intervale (clase de caractere)

Pentru comoditatea programării, în standardul POSIX au fost definite câteva expresii de intervale standard, numite și clase de caractere. O clasă de caractere definește un caracter dintr-un interval dat - de exemplu, o literă de alfabet sau o cifră:

  • [[: alpha:]] - caracterul alfabetic (aA-zZ);
  • [[:: digit:]] - cifra (0-9);
  • [[: alnum:]] - caracterul alfabetic (aA-zZ) sau cifra (0-9);
  • [[: space:]] - omisiuni (linie nouă, filă, etc.).

Dacă nu ați găsit ceea ce căutați, vă recomandăm să utilizați căutarea pe site:

Articole similare