Ghid rapid pentru expresii regulate

Pentru G Suite și Office 360 pentru utilizatorii și pentru dezvoltatorii Python

(Badi James) (20 mai 2020)

Limbajul este rareori simplu de utilizat atunci când extrageți informații. Chiar și sarcina de a găsi și de a număra de câte ori apare un cuvânt într-un corp de text, o sarcină care pare la prima vedere ca și cum ar trebui să fie simplă de făcut cu procesoarele de text moderne și bibliotecile de codificare, poate întâmpina complicații rapid.

Luați exemplul încercării de a afla dacă cerul este menționat într-un corp de text. Abordarea simplă ar fi doar:

  • Ctrl + F „sky” (dacă utilizați un editor de text sau un procesor de text)
  • „sky” în body\_of\_text (dacă scrieți un script în python)

Cu toate acestea, ambele abordări nu vor găsi întotdeauna mențiuni despre cer și, uneori, vor da fals pozitive. Limitările acestor abordări provin din modul în care caută secvența exactă a caracterelor s-k-y. Mai jos sunt enumerate câteva caracteristici ale limbajului care vor provoca eșecul acestei abordări:

  • Scrierea cu majuscule: Dacă o propoziție începe cu „Cer” sau „Cer” apare ca parte a unui nume propriu (sau dacă autorul textului a avut o tastă de blocare cu majuscule rupte) aceste apariții ale cuvântului nu vor fi găsite.
  • Ortografiile altor cuvinte: prezența cuvintelor precum „pe sky ”,„ ri sky ”, etc. va cauza „Cerul” va fi detectat în mod fals.
  • Pluralele: „Cerurile” vor fi nedetectate.

Multe procesoare de text și editori de text au opțiuni disponibile în „Căutare și Funcții de înlocuire ”pentru abordarea primelor două dintre problemele de mai sus. De fapt, opțiunile de tipul „Ignorați majuscule” și „Potriviți cuvântul întreg” sunt activate în mod prestabilit. Cu toate acestea, problema lipsei formelor alternative ale unui cuvânt (plural, timpuri, gen etc.) sau a ortografiilor alternative (de exemplu, numeroasele variante ale numelui Mohammad) vor fi în continuare prezente.

Cu Python, puteți extinde căutare\_frază în linia de cod body\_of\_text adăugând condiționare pentru a acoperi fiecare variantă a cuvântului și pentru a exclude potrivirile fals pozitive. Dar acest lucru poate fi dificil de făcut și vă poate face codul pentru această sarcină presupusă simplă lungă și dificil de întreținut.

Introduceți expresii regulate

Expresiile regulate (sau regex pe scurt) sunt instrumente puternice pentru găsirea tiparelor de caractere din text. Ideea este că, în loc să oferiți codului sau procesorului de text o secvență specifică de caractere de găsit, îi oferiți un model (o expresie regulată) care descrie regulile pe care doriți să le utilizați pentru a lărgi sau restricționa ce segmente ale textului se potrivesc modelul dat.

Specificarea acestor reguli se realizează prin adăugarea de caractere speciale la expresia dvs. obișnuită. Luați exemplul de mai sus de „cer”. O expresie regulată a „\ bsk (y | ies) \ b” se va potrivi atât cu „cer”, cât și cu „cer”, dar nu se va potrivi cu „plictisitor”, „riscant” sau cu orice alt cuvânt care conține s-k-y. Să descompunem scopul fiecăruia dintre caracterele speciale pe care le-am adăugat:

Flancul„ \ b ”care flancează fiecare capăt al expresiei noastre specifică limitele cuvintelor, adică spațiul alb, punctuația, începutul sau sfârșitul textului etc. Aceasta împiedică regexul să se potrivească cu celălalt cuvinte în care „cer” face parte din ortografie (cum ar fi „plictisitor” sau „Skype”).

Parantezele creează un grup de captură. Aceasta este utilizată pentru a specifica la ce parte a regexului doriți să aplicați o regulă specifică. În cadrul acestui grup de captură, avem „|” (aka bara verticală). Acesta acționează ca un operator OR, specificând că fie expresia din stânga („y”), fie expresia din dreapta („e”) pot face parte dintr-o potrivire. Acest lucru permite ca regex-ul nostru să se potrivească atât cu „cerul” singular, cât și cu „cerul” la plural.

Pentru a aborda problema cu majuscule, de obicei aceasta este o problemă ca opțiunea „Ignorați cazul” din Găsiți funcțiile din majoritatea procesoarelor de text și editorilor de text pot fi de asemenea folosite la căutarea utilizând regex. Atunci când utilizați biblioteca Pygeon regex re, steagul e IGNORECASE poate fi utilizat atunci când căutați prin regex (mai multe despre asta mai târziu). Cu toate acestea, fără această opțiune sau acest steag, putem asorta „Cer”, „cer”, „Cer” și „cer” prin mărirea regexului nostru ca atare: „\ b (S | s) k (y | ies) \ b”

Deci, după cum puteți vedea, expresiile regulate au făcut căutarea cerului mult mai fructuoasă! Cu toate acestea, acesta a fost un exemplu relativ simplu de ceea ce poate face regex. Mai jos sunt câteva exemple care demonstrează puterea și versatilitatea expresiilor regulate:

  • M (u | o) hamm? (E | a) (d | t) se potrivește cel mai mult variații de ortografie ale lui Mohammad
  • (? Mountain) Biciclete se potrivește Biciclete dar nu Mountain Bike
  • cafea (?! data) se potrivește cafea dar nu data cafelei
  • (https: \ / \ /)? (www \.)? [a- z0-9] + \. [az] + (\. [az] +)? se potrivește cu multe adrese URL
  • [a-zA-Z0-9 -\_.] + @ [a-zA-Z] + \. [a-zA-Z] + ( \. [a-zA-Z] +)? se potrivește cu multe adrese de e-mail

regexr.com: un site excelent pentru învățare Regex

Exemplele descrise mai devreme te-au făcut să crezi că „pare util, dar cum îmi voi aminti toate diferitele personaje și ce fac? Și cum pot să-mi dau seama dacă expresia mea regulată funcționează așa cum am intenționat? ”. Nu vă faceți griji, regexr.com este aici pentru a vă ajuta.

Pe acest site web puteți crea expresii regulate, folosind foile de cheat furnizate ca ghiduri și lipiți un text pentru a le testa. Orice meci va fi evidențiat în text și va fi afișat un număr al meciurilor. Regexul dvs. este codat în culori și sfaturile la îndemână ale instrumentelor descriu ce face fiecare personaj atunci când treceți cu mouse-ul peste ele. Acest lucru este minunat pentru învățarea regex utilizând regex.

Utilizarea Regex în Google Docs și Foi de calcul Google

Utilizarea Regex în aceste aplicații G Suite este simplă și ușor de utilizat. Pur și simplu apăsați Ctrl + F, apoi faceți clic pe cele trei puncte verticale din caseta de căutare care apare în colțul din stânga sus al browserului. Alternativ, navigați la Editați -> Găsiți și înlocuiți în meniurile derulante. Aceasta deschide fereastra Găsiți și înlocuiți. Aici veți găsi caseta de selectare Potrivire folosind expresii regulate (Documente) sau Căutare utilizând expresii regulate (Foi de calcul). Odată selectat, puteți insera expresia regulată în câmpul Găsiți . Orice potrivire va fi evidențiată în documentul dvs. și un număr de potriviri va fi afișat în câmpul Găsiți . Puteți utiliza în continuare celelalte opțiuni de Găsire și înlocuire disponibile, cum ar fi Potrivire majusculă , iar regex-ul dvs. se va comporta corespunzător.

Utilizarea „Regex” (metacaractere) în MS Word și Excel

Din păcate, expresiile regulate nu sunt acceptate în Word și Excel. Cu toate acestea, ele permit „metacaracterele”, care se comportă la fel, deși simbolurile folosite sunt uneori diferite.

În Word, căutarea folosind metacaracterele poate fi realizată folosind funcția Găsire avansată și Înlocuire. Detalii despre cum să navigați la această caracteristică, cum să activați metacaracterele și ce face fiecare caracter cu metacaracter, puteți găsi în acest ghid furnizat pe site-ul web de asistență Office.

În Excel, nu este evident imediat cum să căutați folosind metacaractere, deoarece nu face parte din nicio caracteristică de căutare. Cu toate acestea, puteți găsi celule care se potrivesc cu expresia dvs. de căutare care conține metacaractere prin filtrarea foilor folosind filtre avansate. Urmați acest ghid de pe site-ul web de asistență Office, unde puteți găsi cum să utilizați metacaracterele ca parte a filtrelor dvs. avansate în „Criterii pentru metacaracter”.

Unde să accesați filtrele avansate în Excel, care permit utilizarea wildcards

Utilizarea regexului în Python

re este furnizată ca parte a instalării de bază Python. Această bibliotecă oferă multe funcții care vă permit să analizați și să manipulați șiruri folosind expresii regulate.

Câteva funcții cheie sunt: ​​

  • re.search ( model, șir, steaguri = 0 ) : Acesta caută prima locație din șir unde șablon (expresia dvs. regulată) se potrivește, returnând un obiect de potrivire descrierea potrivirii sau Niciuna dacă nu a fost găsită nicio potrivire.
  • re.match ( model , string, flags = 0 ) : Se comportă la fel ca re.search (), cu excepția căutării numai a potrivirilor care încep la începutul șirului>
  • re.split ( pattern, string, flags = 0 ): Splits șir într-o listă după potriviri cu model , ca metoda str.split (), dar cu regex.
  • re.sub ( pattern, repl, string, count = 0, flags = 0 ): Înlocuiți aparițiile model din șir cu repl, dacă repl este un șir sau cu ieșirea repl dacă repl este o funcție care ia ca argument un singur obiect de potrivire

Parametrul steaguri permite trebuie să specificați steaguri precum re.IGNORECASE care modifică comportamentul modelelor dvs. de regex în consecință.

Când scrieți modelele dvs. regex ca șiruri în python, este util să utilizați șiruri brute, deoarece acestea vă permit să utilizați caractere speciale, cum ar fi „\”, fără a fi nevoie să le scăpați. De exemplu, în loc de:

  • pattern = “\\ bsk (y | ies) \\ b”

Utilizați:

  • pattern = r ”\ bsk (y | ies) \ b”
Un exemplu din re documentația care arată utilizarea regexului cu aspect pozitiv

Documentație completă pentru re biblioteca poate fi găsită aici: https://docs.python.org/3/library/re.html # module-re

Happy Matching !!

După cum puteți vedea, expresiile regulate pot ușura atâtea sarcini atunci când lucrați cu text. Chiar și învățarea a doar câteva personaje speciale poate permite atâtea noi utilizări ale instrumentelor Găsiți și înlocuiți. Mulți procesoare de text și editori de text și-au recunoscut utilitatea și au permis suportul pentru expresii regulate sau au implementat propriile caracteristici pentru a oferi funcționalități similare. Familiarizarea cu expresiile regulate este un instrument la îndemână în setul de instrumente pentru orice scriitor, dezvoltator de software sau oricine analizează textul des.

AI Palette ajută companiile FMCG cu inovarea produselor lor. Folosim inteligența artificială & Machine Learning pentru a ajuta companiile FMCG să creeze produse câștigătoare pentru consumatori.