Expresii regulate  


Cãutare


Siteuri recomandate

  • ABC Domenii Pachete de gazduire pentru siteuri personale si bloguri.
  • AutoIt Script Curs AutoIt in limba romana.
  • CHML Web Services Servere dedicate si servere virtuale private.
  • Hostvision Gazduire siteuri web si inregistrare domenii
  • IPFind.eu IPFind.eu – Free IP address finder and DNS troubleshooter
  • LAMP Platforma open source de gazduire a site-urilor web.
  • NetHelp Intrebari tehnice si raspunsuri de calitate pentru intrebari tehnice.
  • SkullBox Comunitate online pentru pasionatii de IT.
  • WordPress Admin Tutoriale de utilizare si administrare a blogurilor WordPress.

RegEx

Ce este o expresie regulată? O expresie regulată, pe scurt denumită şi RegEx sau RegExp, este un şir de caractere care descrie un model de căutare în alt şir de caractere sau, de ce nu, într-un fişier întreg. Cu ajutorul expresiilor regulate poţi găsi sau înlocui anumite părţi dintr-un text. Sunt o metodă puternică de verificare pentru validitatea adreselor de e-mail, domenii de internet sau coduri poştale. Un e-mail valid trebuie să se muleze pe un model prestabilit. Cu RegEx putem verifica dacă o adresă e-mail se mulează sau nu se mulează pe respectivul model. Deasemenea cu ajutorul expresiilor regulate putem să analizăm fişiere tot mai mari de text în căutarea informaţiilor dorite. Există diferite definiţii pentru expresiile regulate, fiecare încercând să delimiteze mai bine acest concept. O definiţie pentru expresiile regulate este următoarea: o expresie regulată care se mai numeşte şi pattern, este o expresie care descrie un şir de caractere. Acest şir de caractere se interpretează şi identifică anumite şiruri de caractere. Practic şirul de caractere din şablonul expresiei regulate este schema generală sau “formula”.

RegEx a apărut la jumătatea secolului trecut. Primele programe de computer care au folosit forma iniţială a expresiilor regulate şi căutarea pe patternuri au fost editoarele de text. În editoarele de text, la început, căutarea era făcută doar pe un singur rând iar mai apoi căutările au evoluat până azi când o expresie regulată poate acoperi mai multe fişiere gigantice. În anul 1950 matematicianul Stephen Cole Kleene descria modele matematice folosindu-se de aşa zisele seturi regulare. Apoi a apărut limbajul Snobol care a avut o primă implementare a căutării după paternuri, dar care totuşi nu era aceeaşi treabă cu expresiile regulate de astăzi. După aceasta Ken Thompson a construit editorul QED care avea ca scop să găsească patternuri în fişiere text. Într-un final s-a ajuns la programul grep care foloseşte expresii regulate. Au apărut şi variaţii dezvoltânu-se alte programe pentru Unix şi Unix-like OS şi anume: binecunoscutul vi, Emacs sau AWK. Expresiile regulate de la Perl şi Tcl au fost derivate dintr-o librarie RegEx scrisă de Henry Spencer. După aceasta s-au adăugat şi alte opţiuni şi motorul de expresii regulate a evoluat pe măsură ce timpul a trecut după necesităţi. Philip Hazel a dezvoltat PCRE (Perl Compatible Regular Expressions) care încearcă să se apropie de funcţionalitatea expresiilor regulate din Perl şi este folosit în unelte puternice precum PHP sau serverul Apache pentru HTTP. Practic expresiile regulate au apărut iniţial din nevoia de standardizare în matematică şi crearea de formule. Folosirea expresiilor regulate în documente şi în standarde a început să apară prin anii 1960 şi s-a mărit considerabil în anii 1980 când au fost consolidate standarde ca ISO GML. Mai apoi acestea s-au extins şi au căpătat numele de expresii regulate de astăzi dar nu s-au depărtat prea tare de la scopul iniţial acela de a crea un şablon care se poate interpreta şi pe care se pot mula mai multe răspunsuri posibile. Expresiile regulate sunt folosite în multe editoare de text cât şi în limbaje de programare dar şi de scripting. Spre exemplu în PHP se folosesc expresiile regulate pentru a putea manipula textul bazându-ne pe patternuri sau a găsi anumite şiruri de caractere. Spre exemplu Perl, Ruby şi Tcl au un puternic motor de expresii regulate construit direct în sintaxă. Şi utilitarele Unix, care au evoluat din cele mai vechi timpuri folosesc expresiile regulate, spre exemplu ed şi grep. Aici a fost pentru prima dată auzit conceptul de expresii regulate în interiorul unor utilitare. După aceea ideea s-a popularizat şi a început să fie foarte folosit.

Odată cu trecerea timpului oamenii au simţit nevoia să automatizeze anumite sarcini. Este o muncă extenuantă şi dificilă să cauţi manual într-un bloc mare de text un anumit şir. Cu ajutorul expresiilor regulate această muncă se automatizează. Programatorul nu are altceva de făcut decât să caute şablonul care înglobează şir-ul de text căutat sau şir-urile de text căutate. Cu ajutorul expresiilor regulate nu numai că putem căuta un anumit şir de text, dar putem căuta o varietate de şiruri de text care s-ar încadra într-un anumit şablon. Spre exemplu să presupunem că dorim să căutăm toate apariţiile sintagmelor “programator începător” şi “programator expert“. În loc să facem două căutări putem observa similaritatea celor două sintagme. Cu ajutorul expresiilor regulate vom face o singură căutare după şablonul următor programator (începător|expert). O altă aplicaţie a expresiilor regulate sunt căutările şi modificările de text sau numărul de apariţii ale unui şir de caractere. Aceste aplicaţii, pe lângă altele mai puţin sau mai mult cunoscute, se găsesc în majoritatea editoarelor de text de pe sistemele Windows (precum Wordpad, Notepad), sistemele Unix şi Unix-like (precum vi, emacs) şi aşa mai departe. Spre exemplu şi Shell-ul Unix foloseşte anumite construcţii ca expresii regulate, care nu fac altceva decât să uşureze viaţa administratorului în crearea şi automatizarea diferitelor scripturi. Un alt utilitar de Unix interesant şi totodată util este grep care a fost proiectat special pentru a manipula expresiile regulate. Chiar numele lui „Get Regular Expression Patterns” simbolizează şi mai bine acest nume şi anume că el caută texte descrise de o anumită expresie regulată. El poate să caute după o anumită expresie regulată anumite şiruri de caractere care ne interesează în mai multe fişiere de pe server. Procesarea şi analizarea fişierelor se face linie cu linie. Acestea folosesc în spate un motor RegEx de căutare care permite toate aceste mici automatizări. Unele aplicaţii chiar îţi permit să foloseşti expresii regulate pentru o căutare complexă într-un şir de caractere sau fişier. În concluzie o expresie regulată este o metodă ideală de a descrie orice şir de caractere şi este extrem de folositoare atunci când scriem codul unui program, prelucrăm anumite texte sau în alte aplicaţii diverse. În spatele expresiilor regulate se ascund multe lucruri interesante însă pentru a le putea folosi un programator are nevoie decât să cunoască sintaxa şi contextul în care aceasta este folosită. Să nu uităm de unde am pornit, de la formule matematice sau teoria automatelor finite care are aplicaţii practice în arhitectura sistemelor de calcul.