Metacaractere - html, css, javascript, perl, php, mysql
In toate exemplele acestei activități fragmente de text care se potrivesc cu șablonul evidențiată. Amintiți-vă că linia se numește modelul corespunzător, în cazul în care cel puțin o parte din acest model. Subliniere arată ce parte din aceeași.
Nu ratați următoarele secțiuni și nu vă faceți griji, dacă odată ce ați înțeles totul nu - înțelegerea va veni treptat. Să începem cu meta-caractere.
wildcard simplu
Primul Wildcard - un punct în interiorul punctului de expresie regulată se potrivește cu orice caracter unic, cu excepția NEWLINE (.). De exemplu, în modelul /p.t/ dot înseamnă orice caracter. Acest model corespunde oală cuvântul, pat, groapă, covor, piton și pup_tent. Punctul înlocuiește un singur caracter. Prin urmare, cuvintele apt și se așteaptă ca modelul nu este adecvat, deoarece primul cuvânt dintre simbolurile p și t nu există nici un simbol, iar al doilea - prea multe caractere.
caractere neimprimabile
Anterior, ați învățat că, pentru a fi incluse în wildcard expresie regulată ca literală înainte de a fi necesar să se backslash, iar apoi un wildcard va pierde puterile lor magice:
În cazul în care, înainte de simbolul convențional pentru a pune un backslash, devine o metacaractere. După cum știți deja din clasa a 2, „Perl Building Blocks: numere și șiruri“, unele caractere în sir de caractere au o semnificație specială, în cazul în care există un backslash înaintea lor. Aproape toate dintre ele au același înțeles în expresii regulate, așa cum se arată în tabel. 6.1.
cuantificatori
Până în prezent, am considerat cazul în care un model de caracter care corespunde unui caracter pe linie numai. De exemplu, șablonul / Simon / simbolul S corespunde S, i corespunde /, m și t corespunde etc. Cuantificatorii - o meta-caractere utilizat pentru a indica relația cantitativă dintre caracterele modelului și în șirul de căutare. Cuantificator pot fi livrate după un singur caracter sau grup de caractere, după (pentru grupuri vom vorbi în curând).
Cel mai simplu cuantificator este un metacaractere +. Aceasta înseamnă că, mersul pe jos, în fața lui un simbol corespunde mai multor astfel de caractere într-un șir de căutare de consecutive. Numărul de caractere poate fi orice (cât mai mare posibil, în modelul de potrivire), dar ar trebui să fie de cel puțin un caracter. Astfel, șablonul / do + g / sunt:
Acțiunea * wildcard este similar cu acțiunea +. * Metacaractere indică faptul că caracterul de mers pe jos în fața lui este găsit zero sau mai multe ori. Cu alte cuvinte, modelul / t * / va căuta litere T consecutive, dar în cazul în care nu există astfel de caractere, căutare vor fi considerate în continuare de succes, și anume regex / masina * t / voință.
Chiar mai limitat gama de wildcard. caracterul precedent trebuie să apară zero sau o singură dată (dar nu mai mult). De exemplu, modelul / c? Ola / înseamnă că litera c poate avea loc o dată sau deloc întâlni. Acest model se potrivește cu orice șir ce conține ola caractere, cum ar fi cola.
Diferența dintre metacaractere. și * este că, de exemplu, modelul / c? ola / meci Ola, cola, dar nu ccola. scrisoarea suplimentară din meci nu este inclusă în zona. Model / c * ola / s-ar potrivi, și cola, și ola, și ccola, pentru că, spre deosebire de modelul anterior pentru a se potrivi cu permis un număr nelimitat de scrisori consecutive cu.
Dacă este posibil metacaracterele + *. nu este suficient pentru tine, vă rugăm să folosiți acolade <> pentru a specifica un număr exact de repetiții:
Aici n - numărul minim admisibil de repetiții, m - numărul maxim de repetiții, un pat - un caracter sau grup de caractere, care indică numărul de repetiții. Unul dintre parametrii n sau m pot fi omise, dar nu atât la o dată! Uită-te la exemple:
În expresii regulate, folosit de multe ori idiom. *. Aceasta corespunde la nimic, de exemplu, în șablonul / prima. * Ultimele / - este oricare dintre personajele care sunt între cele două cuvinte. Conform modelului de mai sus, Perl încearcă să găsească cuvântul în primul rând,. text în spatele ei și ultimul cuvânt. A se vedea, de exemplu, șablonul de acțiune următoarele linii:
Uitați-vă bine la linia a treia. meci de model începe, după cum era de așteptat, cu cuvântul includ coincidență firstDalee ultimul cuvânt și text cu privire la următorul ultimul cuvânt. Ar trebui să existe o regulă * A patra joker descrise în „regulile jocului“: este cea mai lungă linie, încă satisface modelul de căutare. În cazul în care doriți să anulați efectul acestei reguli, este necesar să se profite de oportunitatea de potrivire minimă în Perl. Pentru mai multe informații despre acest subiect, consultați pagina perlre manuală.
clase de caractere
O altă problemă comună este utilizarea de expresii regulate - căutare, care se potrivește cu orice caracter dintr-un anumit set. Pentru a căuta numere este bun pentru a avea un model care se potrivește cu orice cifră, pentru a căuta lista de nume de tip VonBeethoven von Beethoven sau vin în șablon la îndemână „sau v, sau V“.
În expresii regulate Perl acest lucru este disponibil. Aceasta este așa-numitele clase de caractere. clase de caractere sunt închise în paranteze pătrate []. În timpul căutării, toate caracterele din clasa sunt tratate ca un singur caracter. În cadrul clasei de caractere pot fi specificate interval (atunci când un interval are un sens), plasând o cratimă între preaplin. Tabel. 6.2 prezintă câteva exemple.
Ultimul exemplu este cel mai interesant. Se poate observa că în cadrul claselor de caractere Cele mai multe metacaractere își pierd valoarea lor și să devină personaje obișnuite. Prin urmare, * - este pur și simplu un literal.
Dacă primul caracter este o clasa caret G, valoarea expresiei este inversată. Cu alte cuvinte, această clasă se potrivește cu orice caracter nu în clasă, de exemplu:
Deoarece clase de caractere], * și - au o semnificație specială, pentru utilizarea lor în clasă, există anumite reguli. Literal „nu ar trebui să fie un simbol de primă clasă înainte ca un literal] trebuie să fie backslash, de exemplu, / [abc \]] / Pentru a fi plasat în clasa cratima .. (-) este suficientă sau să-l pună la prima poziție, sau pus în fața lui simbol feedback- slash.
În Perl, există abrevieri pentru anumite clase utilizate în mod obișnuit. Toate aceste reduceri constau din backslash urmat de un nemetasimvola, așa cum se arată în tabel. 6.3.
Iată câteva exemple:
Dar fii atent! Ultimul model nu este întotdeauna calea, cum ar fi un caracter de subliniere, înconjurată de spații, vor fi luate în considerare, de asemenea, scurte. În plus, nu toate cuvintele vor fi găsite folosind ultimul model, dar numai cele care sunt înconjurate de spații. În acest caz, cuvinte, cum ar fi nu nu va fi găsit din cauza apostrof. Mai jos, vi se va oferi un șablon mult mai bine pentru cuvintele de căutare.
Gruparea și alternanței
Mai multe modele pot fi combinate într-o expresie regulată, astfel încât șirul gasit pentru a se potrivi cel puțin unul dintre ei. Acest lucru este util în cazul în care, de exemplu, pentru a verifica linia de prezența cuvinte câini sau pisici. Pentru a rezolva această problemă este operarea alternanței, care este stabilită într-un simbol de expresie regulată |, de exemplu:
Alternanțe - vesh util, dar nu întotdeauna convenabil dacă aveți nevoie pentru a găsi un număr mare de cuvinte similare. Să presupunem că aveți nevoie pentru a găsi unul dintre cuvintele broasca, mlaștină, jurnal, biciuiți, sau bloca, iar expresia / broasca | smîrcul | log | flog | înfunda / pare a fi prea greoaie. Apoi, trebuie să utilizați alternanței doar pentru a începe linia. Puteți încerca să utilizați acest șablon:
Folosind acest șablon nu va fi capabil să obțină nu știu efectul necesar, deoarece Perl, că alternanța ceea ce privește partea inițială a liniei. Pentru a rezolva această problemă, trebuie să utilizați grupul Perl expresii regulate cu paranteze de caractere
cornierelor de fixare permise și, în consecință grupurile de atașare. Exemplul anterior poate fi rescrisă astfel:
.
În contextul unei liste de operator de modelul de potrivire returnează o listă a pieselor găsite de expresii care se potrivesc cu șablonul. Fiecare grup returnează valoarea corespunzătoare din listă, și în cazul în care grupurile din șablon nu este - pur și simplu returnează 1. Iată un exemplu:
În acest caz, modelul corespunde unei secvențe arbitrare de simboluri (este setat ca un prim grup), în spatele căruia este spațiul, cuvântul este, un alt spațiu și apoi o altă secvență arbitrară de simboluri (este setat ca un al doilea grup). Valorile șirul de căutare corespunzătoare grupelor de expresii regulate sunt atribuite elementele listei fruiti $ $ culoare, situate pe partea stângă a operatorului de atribuire.
Ultimele două metacaracterele (Pun pariu ca te gandesti, „Când se execută în cele din urmă afară?!“) - aceasta este ancorată. Cu ajutorul lor, puteți specifica unde în șir (la începutul sau la sfârșitul anului) trebuie să fie găsit în conformitate cu șablonul.
Prima dintre aceste ancore - caret (^). Acest simbol ^ moșii la începutul expresiei regulate, a declarat că modelul de potrivire pentru a fi găsite la începutul liniei. De exemplu, / ^ video / videoclipul se potrivește cu cuvântul, dar numai în cazul în care este la începutul liniei.
simbolul dolar ($) - Lui dublu. Acest simbol este plasat la capătul unei expresii regulate, a declarat ca model de potrivire pentru a fi găsit la capătul liniei. De exemplu, / pământ $ / meciuri mod pământ, dar numai dacă este la capătul liniei. Mai jos sunt câteva exemple (vezi Tabelul 6.4.).