Ați încercat vreodată să găsiți un model recurent într-o bucată de text? S-ar putea să fi folosit ceva de genul funcției de căutare în browserul dvs. sau în procesorul de text, dar atunci când trebuie să găsiți ceva mai complex, poate fi ca și cum ați găsi un ac în fânul proverbial.
Din fericire, există o modalitate de a alege modele precise în text până la personaj. Se numește expresii regulate (RegEx) și vă permite să deveniți un maestru al căutării prin text.
Unde pot folosi RegEx?
Deși Unix și Linux le-au făcut populare, expresiile regulate sunt disponibile într-o varietate de pachete, inclusiv Microsoft Word.
Expresiile regulate sunt folosite mai ales în mai multe programe Linux notabile, inclusiv grep
, Awk
și Sed
.
De exemplu, vă recomandăm să verificați dispozitivele USB de pe computer. Folosind lspci
, veți vedea o listă cu toate dispozitivele și va trebui să localizați singur intrările USB. În schimb, puteți utiliza următoarele pentru a afișa numai dispozitivele USB:
lspci | grep "USB"
Acesta este cel mai simplu exemplu de RegEx în acțiune. Este cel mai popular mod de a folosi expresii regulate în terminal, dar nu singurul. Astăzi puteți găsi asistența RegEx în multe tipuri diferite de software, de la editori de text la manageri de fișiere.
Găsirea modelelor
Probabil că ați folosit *
caracter, care acționează ca un wildcard atunci când selectați fișiere sau foldere în terminal. De exemplu, pentru a lista toate fișierele JPG dintr-un folder, puteți utiliza:
ls *.jpg
Echivalentul RegEx al celor de mai sus ar fi:
ls | grep -E ".jpg"

Pentru a căuta atât fișiere jpg cât și png, utilizați:
ls | grep -E "(.jpg|.png)"
Gama
Dacă doriți să căutați un anumit interval de caractere în loc de un model, puteți face acest lucru definindu-l între paranteze. Dacă, de exemplu, utilizați [a-z]
ca model, acest lucru s-ar potrivi cu orice șir format din litere mici ale alfabetului.
După cum ați fi putut ghici, [A-Z]
ar selecta doar litere mari. Pentru a alege orice gamă de litere, atât cu majuscule, cât și cu minuscule, expresia s-ar schimba în [a-zA-Z]
.
Pentru a localiza un anumit număr de instanțe ale modelului dvs., îl puteți indica între paranteze. {5}
ar returna cinci apariții ale tiparului tău. De asemenea, puteți utiliza game de numere {5,10}
ți-ar prezenta cinci până la zece instanțe.
MetaCaractere
În expresiile regulate, puteți căuta și părți ale unui șir cu două caractere numite metacaractere. Sunt similare cu potrivirile cu metacaracter pe care le-ați fi putut folosi în shell.
Primul este punctul simplu, care reprezintă orice alt caracter unic. Dacă ați folosit modelul c.ll
, s-ar potrivi cu „celulă”, dar și cu „eliminare” și „apelare”.
Introducând un asterisc după un punct, îl puteți utiliza pentru a se potrivi cu un număr infinit de caractere. De exemplu, .*board
va fi o potrivire atât pentru „tastatură”, cât și pentru „skateboard”. chiar dacă „cheie” și „skate” au un număr diferit de litere.
Evadare
Este posibil să fi observat că, în exemplul nostru, în care am selectat diferite tipuri de fișiere imagine, am folosit backslash înainte de punct („ .jpg”). Așa scapi de personaje speciale în RegEx.
Dacă nu le-am folosi, modelul nostru nu s-ar potrivi doar cu extensiile fișierelor, șiruri precum „.jpg” și „.png”, ci s-ar potrivi și cu „ajpg” și „opng”. Tine minte, .
este un wildcard care se potrivește cu orice personaj.
Ancore și limite
Ancorele și limitele vă permit să definiți mai precis ceea ce căutați.
Pentru a găsi doar cuvântul individual „computer”, fără alte caractere atașate înainte sau după, ar trebui să definiți modelul ca. <computer>
.
De asemenea, puteți căuta în mod specific modele care apar la începutul sau la sfârșitul liniei. Acest lucru se realizează cu ^
și $
personaje respectiv.
Deci, dacă ați dori să găsiți doar intrările în care a apărut cuvântul „computer” la începutul unui rând, modelul dvs. ar arăta ca ^computer
. Dimpotrivă, atunci când este la sfârșitul liniei, modelul s-ar schimba în computer$
.
Acestea sunt regulile simple ale RegEx, pe care le puteți combina și pentru a găsi cu precizie tiparele pe care le căutați. Puteți căuta intervale de caractere la începutul unui rând sau alternând cuvinte la sfârșit, date specifice sau un interval de ani, folosind un singur șir de text.
Nu uitați să consultați foaia de trucuri pentru Expresii regulate pentru a stăpâni expresiile regulate.
Legate de: