Expresii regulate, lecții, șabloane pentru zennoposter


Expresiile regulate sunt utilizate pe scară largă în program, și anume:
- Pentru a căuta elemente;
- Atunci când analizați date de pe site-uri web sau dintr-un fișier;
- Pentru facilitarea procesării datelor din diverse surse (înlocuirea sau eliminarea fragmentelor de text);
- Când se instalează delimitatori în liste și tabele;
- Mult mai mult.

O expresie regulată este limba căutării subreverselor în text, pe baza utilizării simbolurilor speciale și a indicatorilor. De fapt, acesta este un eșantion de șir, care constă din caractere (text static) și caractere speciale (simboluri care denotă unele secvențe) și specifică regula pentru găsirea substringului în textul procesat.

Pentru a construi expresii regulate în program există un instrument special - "Constructor de expresii regulate". În ea, puteți testa expresii gata, precum și compune-ți propria.

Luați textul și compuneți pe exemplul său o expresie regulată pentru a obține domeniile de site-uri:


În constructor există câmpuri separate - textul care se află înaintea căutării (a href = "), din care începe (http :), textul final (.com) se termină, care urmează după el ("> "). Ca rezultat, obținem următoarea expresie regulată:

și o listă de domenii în rezultatele testelor.

Expresii regulate, lecții, șabloane pentru zennoposter

Tot în Designer există două casete de selectare:
1) Activați despărțirea - activați și dezactivați căutarea de text cu privire la rupturile liniei (când această opțiune este activată, expresia regulată nu se limitează la căutarea în cadrul unei linii, ci ia în considerare și rupturile liniei);


2) Cea mai scurtă potrivire - activează și dezactivează căutarea celei mai scurte potriviri. Când această opțiune este activată, în rezultate obținem cea mai scurtă subrețea corespunzătoare expresiei compuse. Când este dezactivată, respectiv cea mai lungă.


Când sunt completate aceste câmpuri, textul dvs. este automat convertit, iar câmpul "Text expresie regulată" va fi prevăzut cu o expresie gata utilizată pentru căutarea.
Constructorul expresiei regulate, care este în programul Zennoposter, nu este destul de rău, dar nu este universal. Este potrivit pentru compilarea expresiilor simple atunci când avem potriviri exacte în text - ce se întâmplă înainte sau după textul pe care trebuie să-l găsim, ce începe sau ce se termină. Uneori, rezultatul obținut nu este satisfăcător - liniile sunt mai mari sau mai mici decât este necesar sau pur și simplu primim gunoi diferit în locul textului necesar. În astfel de cazuri, sunt necesare mai multe cunoștințe și corecții ale expresiilor generate de Designer, manual.

Pentru a formula propriile expresii regulate în mod corect, vom analiza simbolurile de bază, vom determina în ce situație pot fi folosite.

“. "- orice caracter, cu excepția rupturii liniei (\ n);
"\ D" este un caracter numeric, adică orice cifră de la 0 la 9;
"[0-9]" - intervalul digital diferă de \ d prin faptul că în această formă este posibil să se precizeze nu orice caracter numeric, ci folosind intervale, de exemplu [1-3], care vor găsi numai cifrele 1, 2 și 3;
"\ D" nu este un caracter numeric. Ie toate caracterele sunt alfabetice și spații, cu excepția cifrelor;
"\ S" sunt toate caracterele spațiului alb care pot include:
- spațiu "\";
- pagina nouă "\ f";
- retur retur "\ r";
- linie nouă "\ n";
- caracterul fila "\ t";
- un caracter tabular vertical "\ v";
"\ S" nu este un caracter albe, adică toate literele, numerele și semnele. Tot ceea ce nu este enumerat mai sus, ca caractere spațiu alb.
"\ W" este un caracter alfabetic sau numeric sau un subliniere.
"\ W" este orice caracter, cu excepția unui caracter alfabetic sau numeric sau subliniere.

De exemplu, trebuie să verificăm dacă șirul conține cuvântul "Red" scriind "roșu" în constructor, putem obține aceleași cuvinte care includ acest cuvânt, cum ar fi "frumos" etc. Orice se întâmplă, trebuie să scrieți \ b red \ b - astfel încât toate cuvintele care pot fi similare cu cele pe care le căutați nu vor fi luate în considerare.
Nu limita cuvântului, respectiv, lucrează invers. De exemplu, știm că cuvântul trebuie să se termine cu "a trăit", dar nu avem nevoie de cuvântul "live", atunci ne-am înregistrat \ au fost și a obține o listă de cuvinte cu sfârșitul dorit - au prețuit, au supraviețuit etc.

Cuantificatorii sunt stabiliți după simbolurile a căror număr de repetări trebuie specificat.
De exemplu, luați un punct care reprezintă orice caracter și creați o expresie regulată care să corespundă oricărei secvențe de 4 caractere. Rezultatul va arăta astfel :.
Astfel, puteți specifica că în textul de căutare există un număr stabilit sau nelimitat de repetiții ale caracterelor instalate, și anume:
O expresie regulată va găsi cuvinte precum un tabel, un scaun etc. dar va fi, de asemenea, potrivită cu o linie care are în goluri medii, numere și așa mai departe.


Expresii regulate, lecții, șabloane pentru zennoposter

Pentru a indica faptul că vor exista numai scrisori în interior, este necesar să scrieți astfel:

Expresii regulate, lecții, șabloane pentru zennoposter

De asemenea, puteți specifica o anumită secvență sau set de simboluri care trebuie luate în considerare. Pentru aceasta, se folosesc paranteze pătrate, în care sunt prescrise intervale sau seturi de caractere.


Pentru a specifica intervalele, se utilizează o linie între valori. Pentru enumerare, caracterele sunt pur și simplu scrise într-un șir fără nici un delimitator.
[a-zA-Z1-5abb] - această secvență indică orice literă în litere mari și mici, numere de la 1 la 5 inclusiv, precum și literele rusești a, b și c.

Expresia obișnuită va arăta astfel:

Indicăm că după litera "c" există 2 simboluri indicate în paranteze pătrate și această secvență va găsi cuvântul și tabelul, dar va corespunde și succesiunii de litere "suul", "sutle" și altele.

(? i) - Permite expresia să fie insensibilă pentru litere mici;


(a-i) - dezactivează insensibilitatea expresiei în cazul caracterelor.

Folosind acești modificatori, putem indica expresiei regulate dacă cazul simbolurilor este important pentru noi atunci când căutăm un eveniment. Dezactivând registrul la începutul expresiei regulate, îl dezactivăm pentru toate meciurile ulterioare din șir.

Expresii regulate, lecții, șabloane pentru zennoposter
Expresii regulate, lecții, șabloane pentru zennoposter

Există, de asemenea, cazuri în care, într-un singur loc, registrul nu este important pentru noi, dar în altul este important.

Expresii regulate, lecții, șabloane pentru zennoposter

Această expresie regulată va găsi șirul "Test, TEST", deoarece prima frază include insensibilitatea la registru și găsește toate coincidențele, dar nu găsește "TEST, Test", deoarece în a doua frază trebuie să existe o potrivire exactă în registru.

Modificatori de căutare multiplă:
(? m) - include căutare multi-linie
(a-m) - dezactivează căutarea multiplă

Pentru a găsi toate liniile începând cu un caracter non-spațiu, este adecvată următoarea expresie regulată:
(a)

Caracterele care trebuie scăpate astfel încât să fie luate în considerare în expresia regulată ca text, și nu ca parte a unei expresii regulate (metacaractere):

Dacă utilizați aceste caractere într-o expresie regulată, ca parte a textului, acestea ar trebui să fie scape cu \.
De exemplu, dacă aveți un semn de întrebare în text, este indicat ca \?

. - Această expresie regulată corespunde unei secvențe de 5 până la 10 caractere, altele decât o rupere de linie. Poate fi folosit pentru a trunchia textul la lungimea dorită, pentru a parsa anumite substringuri cu o anumită lungime, precum și pentru a specifica numărul necesar de seturi de caractere necunoscute în interiorul textului.

a \ d + a - în cazul în care între textul căutat care este cunoscut, există numere constând dintr-un număr diferit de caractere. Această expresie regulată corespunde cu ala. a23a. a459a și așa mai departe.

și [2-5] a - această expresie regulată va lua un text care începe cu "a" și conține 2 până la 4 cifre 2, 3, 4 sau 5 în interiorul și se termină cu "a". De exemplu, a354a sau a52a

De exemplu, trebuie să luați url-ul site-ului din următoarea linie id = "123" a href = "www.site.com">. unde numărul de identificare se schimbă întotdeauna, dar doar că există alte adrese URL în eticheta a href care nu sunt necesare.
Testerul de exprimare regulată ne va oferi această opțiune:

dar se va potrivi numai cu șiruri ale căror idiomuri sunt "123". pentru că trebuie să specificăm că în loc de 123 poate exista orice secvență de cifre, le înlocuim cu \ d + și obținem următoarea expresie regulată

care va primi toate liniile care conțin orice idi.

În ceea ce privește cea mai scurtă potrivire în expresia regulată. Trebuie înțeles că prin cea mai scurtă coincidență se înțelege o parte a textului care începe și se termină cu condiția specificată în expresia regulată.


Dacă luăm șirul de href = "www.site.com"> a href = "www.site2.ru"> și aplicăm expresia regulată "(?<=a\ href=").*?\.ru(?=">) ". în răspuns vom primi site-ul www.site.com "> a href =" www.site2.ru în loc de "www.site2.ru"


De ce nu ne-a căutat cea mai scurtă coincidență? Aceasta se întâmplă deoarece expresia obișnuită a primit din text prima parte, care ar trebui să meargă înainte de textul dorit, adică "A href =". Apoi am continuat să caut până am găsit condiția că linia ar trebui să se termine, adică ".ru" urmată de ">


Pentru a evita acest lucru, în acest caz puteți folosi această structură de expresie regulată:

indică faptul că între părțile textului căutat există un caracter care nu are caracter spațiale, în loc de orice caracter, ca și mai înainte

În cazul în care poate exista ceva în expresia regulată - diferite lungimi diferite de text sau poate fi absent în totalitate, puteți introduce secvența ". *?"

Pentru a indica faptul că valoarea începe cu o nouă linie și / sau se termină la sfârșitul liniei, următoarea expresie regulată se potrivește:

Adesea, această desemnare ajută la construirea expresiei regulate corecte pentru găsirea de elemente pe pagina web.

În cazuri, dacă căutăm un element pe diferite site-uri, acesta poate fi afișat cu diferite registre, de exemplu: String, STRING, string. Din punct de vedere al mașinii, aceste trei valori vor fi diferite și există doar unul care este clarificat cu acest caz în minte.


Dacă trebuie să pregătiți o expresie regulată care să găsească toate aceste meciuri, trebuie să vă înregistrați

și anume dezactivați expresia regulată cu o sensibilitate la registru și continuați să înregistrați expresia obișnuită. În această formă, există toate coincidențele, indiferent de registru.

Dacă trebuie să luați text dintr-o pagină web, poștă sau fișier, trebuie să țineți cont de faptul că începutul liniei, desemnate ca ^ este doar începutul primei linii de text și sfârșitul liniei, desemnate ca $, este doar sfârșitul ultimei linii.


Restul liniilor din text au despărțitoare, adică toate aceste linii se termin cu un caracter retur de carriage (\ r) și încep cu un caracter de linie nouă (\ n).

Pentru a indica faptul că expresia regulată trebuie să înceapă și să se termine într-o singură linie, putem scrie clauza OR, care este notată ca o tăietură verticală - |
Expresia obișnuită arată astfel:

De asemenea, puteți utiliza în mod suplimentar modificatorul de căutare multi-linie, care consideră că fiecare linie este nouă:

Într-o expresie regulată, puteți specifica ce trebuie să căutați folosind operatorul OR, după cum urmează:

1 | 2 (care va indica alegerea a 1 sau 2)

Astfel, putem verifica pe pagina prezența mai multor texte simultan.
De exemplu, trebuie să verificați expresiile de pagină "Bună ziua", "Vă mulțumim pentru înregistrare", "Bine ați venit", putem combina toate aceste date într-o expresie regulată după cum urmează:

Bună ziua | Vă mulțumim pentru înregistrare | Bine ați venit

Cu această construcție, verificarea prezenței textului pe pagină va primi una dintre aceste opțiuni.

În cazul în care semnul "OR" nu ar trebui să fie utilizat pentru întreaga expresie regulată, așa cum este arătat mai sus, dar numai pentru partea sa, această parte trebuie să fie în interiorul parantezelor. De exemplu:

Această expresie regulată va găsi expresia "Ce face el". - Ce face ea. și "Ce fac".

<.*?> - găsiți toate etichetele din text;

\ + #])? - vor primi adrese URL ale site-urilor.


Mulțumesc tuturor, care au stăpânit acest articol, sper că este util pentru utilizatorii care o citesc și este util mult mai mult.