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.

Istoric

Expresiile regulate îşi au rădăcinile în teoria automatelor, teorie care studiază maşinile abstracte şi problemele care pot fi rezolvate cu ajutorul acestora, şi în limbajul pseudocod folosit în programare pentru a prezenta într-un limbaj uşor de înţeles un anumit algoritm sau o anumită tehnică. Teoria automatelor şi limbajul pseudocod au ca scop clasificarea şi reprezentarea abstractă a datelor. În anul 1950 matematicianul Stephen Cole Kleene a descris modelele folosite în teoria automatelor ca “seturi regulate”. Limbajul SOBOL a fost primul care a implementat o potrivire pe bază de şablon, foarte asemănătoare dar nu identică cu expresiile regulate. Ken Thompson, unul din părinţii sistemului de operare UNIX şi creator al limbajului B, predecesorul limbajului C, a implementat în editorul QED o metodă de potrivire a şabloanelor bazată pe setul regulat al matematicianului Stephen Kleene. Mai târziu a adăugat această funcţionalitate şi în editorul de text din UNIX, ed, care a dus mai târziu la crearea filtrului grep – un filtru foarte des utilizat în UNIX. De atunci s-au folosit mai multe variante ale modului de potrivire a şabloanelor implementat de Ken, printre cele mai cunoscute aplicaţii care au implementat funcţionalitatea fiind expr, AWK, Emacs, vi si lex. Expresiile regulate din limbajele Perl şi Tcl sunt derivate dintr-o implementare a expresiilor regulate scrise de Henrz Spencer. Motorul de expresii regulate din Perl a fost mai târziu modificat pentru a se adăuga noi capabilităţi de funcţionare a şabloanelor ajungând să difere destul de mult de varianta iniţială. Philip Hazel a dezvoltat în 1997 PCRE (Perl Compatible Regular Expressions), o librărie scrisă în C care încearcă să exporte expresiile regulate din Perl în alte limbaje sau medii. PCRE a ajuns datorită flexibilităţii oferite să fie cel mai utilizat mod de scriere a expresiilor regulate.

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.