Cuprins
În sistemele informaționale de astăzi este normal să vedeți funcții de căutare, aceste funcții de fiecare dată trebuie procesate tipare a mult mai multor complexe. Pentru a putea lua în considerare fiecare caz în special, ar dura câteva mii de ani, motiv pentru care au fost dezvoltate mecanisme care permit stabilirea unei reprezentări formulate a căutărilor.Aceste formule pot fi găsite în expresii obisnuite, care ne permit să stabilim modele pentru evaluarea șirurilor de text și să returnăm o valoare pozitivă sau negativă dacă șirul respectiv corespunde sau nu formulei exprimate.
În Java Putem implementa expresii regulate într-un mod simplu, dar acest lucru necesită un studiu destul de amplu al dezvoltatorului, astfel încât acesta să poată învăța diferitele elemente pe care le are.
Modul în care putem exprima formulele cu care ne putem testa modelele cu o anumită construcție de cod, vom numi acest lucru sintaxa expresiei regulate.
Ce ne permite sintaxa?Ceea ce ne permite sintaxa este să stabilim tipare după tipul de caracter, cantitate, combinație de caracter și cantități, începeți cu un anumit element, setați o expresie pentru centrul formulei și un sfârșit. Cu aceasta putem identifica modele foarte specifice care ar putea fi necesare în programul nostru sau poate filtra într-un mod mai adecvat o căutare pe un text sau o bază de date.
Să vedem mai jos o mică listă a elementelor cele mai utilizate în expresiile regulate cu Java, există mult mai multe elemente decât cele prezentate în acest tutorial, deci este recomandat să faceți propriile cercetări pentru a consolida cunoștințele:
Începutul liniei\^ Cu acest element continuăm să indicăm către Java care începe o linie în expresia regulată.
Sfârșit de linie$ Cu acest simbol indicăm că am terminat linia.
Lista de caractere[] Cu paranteze indicăm expresiei regulate că ar trebui să caute oricare dintre listele din interior.
Exclude[\^] Ne permite să selectăm orice caracter care nu este listat.
Cuantificator{j, k} Găsiți ce este în j numărul de ori indicat k; {j,} în acest al doilea caz, orice este în j de una sau mai multe ori; in cele din urma {j} indică faptul că ar trebui să apară ceea ce este j o singură dată.
Caracterele Word\ w Găsiți personajele care aparțin cuvânt, dar dacă folosim \ W face opusul localizează personaje care nu aparțin.
Cifre\ d Ne permite să facem meciuri cu doar cifre și dacă folosim \ D vom potrivi orice nu este o cifră sau un caracter numeric.
Goluri\ s Ne permite să potrivim spații goale, cum ar fi file, bara de spațiu, dar dacă folosim \ S face opusul, se potrivește cu tot ceea ce nu este spațiu alb.
După cum putem vedea cu aceste câteva elemente, putem construi diverse combinații cu care putem obține modele relativ complexe.
Dacă vrem să încercăm una frază regulată Înainte de a compila un program putem folosi pagina rubular.com unde putem evalua tiparele în timp real.
MARI
Vom realiza un exemplu simplu în care vom testa un expresie regulată pentru validarea unui e-mail, vom folosi următoarele:[_ a-z0-9 -] + (\. [_ a-z0-9 -] +) * @ [a-z0-9 -] + (\. [a-z0-9 -] +) * (\. [az] {2,3}) $
Mai întâi trebuie să introducem expresia regulată în primul câmp al formei paginii de rubular.com apoi în câmpul numit șirul de testare este locul în care vom testa diferite e-mailuri pentru a verifica dacă regexul funcționează, să vedem cum se comportă validatorul atunci când introducem un e-mail nevalid:
MARI
După cum putem vedea, exemplul nostru de e-mail lipsește perioada, deci este nevalid și nu nu generează nicio potrivire Cu expresia regulată, o vom corecta plasând punctul lipsă și validatorul generează automat un răspuns pozitiv, permițându-ne să vedem că expresia noastră regulată funcționează fără nicio problemă.MARI
După cum putem vedea, aceasta este o resursă foarte utilă atunci când învățăm să folosim expresii regulate nu numai în Java dacă nu în orice limbă.Odată ce știm ce face fiecare dintre elementele de bază ale sintaxei, acum trebuie să învățăm cum putem face un căutați un model în Java, cu aceasta putem vedea ce metode, clase și pachete intră în joc atunci când folosim expresii regulate.
Primul lucru pe care ar trebui să-l știm este că toate aceste utilități sunt în pachet java.util.regex, deci pentru a face aceste exemple trebuie să includem acest pachet la începutul orelor noastre.
Odată ce cele de mai sus sunt realizate, putem testa un model în felul următor:
if (ourString.matches (ourExpression)) {// Dacă se potrivește aici executăm un cod}
Vedem că folosim metoda chibrituri (), aceasta va evalua șirul de caractere în raport cu modelul regex și va reveni Adevărat sau fals, în cazul în care șirul de caractere se potrivește sau nu cu modelul.
Acest tip de utilizare este bine în validări mici, cu toate acestea, dacă vom folosi o validare recurentă, adică va apărea de multe ori în cadrul programului nostru, cel mai bine este să facem o rutină mică sau o clasă care să ne permită să evaluăm șirul de formă parametrică, adică o rutină sau metodă care ne permite să introducem un șir și să returnăm adevărat sau fals, comparând deja cu un anumit tipar.
În următorul program vom testa un model mic și îl vom evalua în funcție de câteva șiruri, iar programul ne va spune care este cel pe care îl face. Meci, adică care se potrivește și care nu, să vedem codul și apoi vom vedea cum funcționează:
import java.util.regex. *; public class TestPatterns {public static void main (String [] argv) {String pattern = "Q [u] \ d + \."; String [] input = {"QA777. Este identificatorul produsului nostru.", "Quack, Quack, Quack!" }; Model p = Pattern.compile (model); for (String in: input) {boolean găsit = p.matcher (in) .lookingAt (); System.out.println ("'" + pattern + "'" + (găsit? "Matches '": "nu se potrivește'") + în + "'"); }}}
Aici vedem cum primul lucru pe care îl facem este să importăm pachetul menționat la începutul acestei secțiuni, pentru a obține în acest fel funcționalitățile căutării prin expresii regulate. Apoi construim un model pe care îl vom folosi este programul nostru, în acest caz este un model care se potrivește cu litera „΄Atunci trebuie să aibă orice caracter, cu excepția literei”sau”Și trebuie să se termine cu un punct. Apoi ne compilăm modelul folosind metoda compila și îl putem folosi pentru a face meciuri. În cele din urmă, dacă modelul se potrivește, acesta este tipărit cu cuvântul Meci altfel tipărim nu se potrivește.
Să vedem în imaginea următoare cum arată acest lucru când rulăm programul:
MARI
Apoi notăm, după cum sa explicat, primul șir sau lanț dacă se potrivește, dar al doilea nu, și pentru referințe suplimentare plasăm modelul pe care ar trebui să se facă comparația.Acum vom efectua un exemplu mai avansat, vom identifica ce parte din șirul nostru se potrivește, acest lucru este foarte util atunci când facem căutări de text, deoarece cu aceasta am putea evidenția potrivirile a ceea ce introduce utilizatorul.
Pentru aceasta vom folosi aceeași bază a programului nostru anterior cu câteva modificări, să vedem codul și apoi explicația acestuia:
import java.util.regex. *; public class Match {public static void main (String [] argv) {String pattern = "Q [u] \ d + \."; Model r = Pattern.compile (model); Text șir = "ID-ul este: QW990. Sfârșitul testului!"; Matcher m = r.matcher (text); if (m.find ()) {System.out.println (pattern + "matches \" "+ m.group (0) +" \ "inside \" "+ text +" \ ""); } else {System.out.println ("Fără potriviri"); }}}
Încă o dată vedem cum începem programul nostru, inclusiv pachetul java.util.regex. *. Apoi folosim același model din programul anterior și îl compilăm cu metoda compila, lucru interesant vine acum, am folosit metoda chibrit () pentru a localiza meciul și apoi cu metoda găsi () și metoda grup () putem extrage exact ce se potrivește, în cele din urmă realizăm serigrafiile corespunzătoare. Să vedem cum arată programul nostru acum:
MARI
Astfel vedem cum am reușit să izolăm cuvântul care se potrivește cu adevărat cu modelul pe care l-am aranjat pentru compararea frază regulată.Una dintre cele mai utilizate aplicații este pe forme, unde putem face validări ale e-mailuri, numere de telefon, carduri de credit, parole, adrese IP, nume de utilizator, coduri poștale și chiar confirmă faptul că toate etichetele noastre din documentul nostru HTML sunt închise corect, ceea ce ne oferă posibilitatea de a obține o securitate mai mare în procesarea textului introdus de utilizatori.
Dar nu numai în validările în câmpurile unei forme, așa cum am observat în ultimul nostru exemplu, putem face și noi căutări lungi de text Printr-un anumit tipar, cu acesta putem căuta documente text foarte complexe într-un mod sistematic și astfel putem economisi mult timp, pur și simplu scriind un mic program.
Cu aceasta am terminat acest tutorial, am învățat cum putem trece de la a avea diferite elemente pentru a exprima situații în modelele noastre la a face în mod eficient comparațiile corespunzătoare ale textului sau caracterelor pe care dorim să le evaluăm, toate acestea datorită expresii obisnuite. Aceste evaluări sunt destul de rapide datorită optimizărilor pe care le face limbajul în metodele pe care ni le oferă, deci sunt foarte potrivite pentru construirea de interfețe în care trebuie să căutăm și să validăm textul pe care îl introduce utilizatorul.V-a plăcut și ați ajutat acest tutorial?Puteți recompensa autorul apăsând acest buton pentru a-i oferi un punct pozitiv