Cum să începeți să utilizați Regex cu aplicația de comenzi rapide

În ultima lună, am acoperit aplicațiile Comenzi rapide și Automator pe iOS și, respectiv, macOS. Ambele sunt puteri atunci când vine vorba de automatizare în ecosistemul Apple și, începând cu macOS Monterey în această toamnă, Shortcuts va fi aplicația de automatizare de bază pe toate dispozitivele Apple. Acesta este motivul pentru care am vrut să petrec acest articol discutând un subiect foarte puternic: Utilizarea expresiilor regex cu aplicația Comenzi rapide.

Deși am ceva experiență în informatică și programare, cumva nu am întâlnit niciodată regex. Poate că numele m-a speriat sau poate a fost codul, care este unul dintre codurile cel mai puțin lizibile pe care le-am văzut vreodată.

Oricare ar fi cazul, am decis să mă uit mai mult în regex după ce am acoperit aplicația Shortcuts în ultimele câteva luni. Și ceea ce am descoperit a fost că multe dintre limitările pe care le-am întâlnit cu comenzile rapide, precum și cu Automator, puteau fi depășite cu expresia regex.

Cu alte cuvinte, nu că aceste aplicații aveau lipsă de funcții, ci că îmi lipsea educația.

Așadar, în postarea de astăzi, tu și cu mine vom învăța împreună dezavantajele regex. În acest fel, puteți profita la maximum de fiecare dintre aceste aplicații.

Vom acoperi elementele de bază ale regex (începând cu ceea ce este), ce puteți face cu el în aplicația Comenzi rapide, unele site-uri web și resurse pe care le puteți folosi dacă nu aveți chef să învățați singur regex, apoi vom intra în conceptele de bază și mecanica regex limba.

Bine, să începem!

Cuprins

  • Ce sunt expresiile regulate (adică regex)?
    • Lucruri pe care le puteți face cu regex
  • Cum puteți utiliza expresia regex cu aplicația Comenzi rapide?
  • Utilizați regex101.com pentru a vă testa expresiile regulate
  • Dacă nu doriți să învățați cum să utilizați expresia regex cu aplicația Comenzi rapide, citiți aceasta
  • Regex pentru începători: începeți să utilizați regex cu comenzi rapide
    • Ce sunt aromele regex?
    • Site-uri web și referințe pentru a vă ajuta să începeți să învățați expresii regex cu comenzi rapide
    • Cum se efectuează o căutare de text de bază utilizând expresia regulă cu comenzi rapide
    • Adăugarea de componente variabile la căutările regex
    • Intervalele vă pot extinde căutarea
    • Cum să excludeți cuvinte și caractere din căutările regex cu comenzi rapide
    • Wildcard-urile vă pot oferi mai multe opțiuni de căutare
    • Utilizați cuantificatori pentru a specifica lungimea textului pe care îl căutați
    • Mai sunt câțiva cuantificatori despre care veți dori să știți
    • Căutați caractere la începutul și la sfârșitul unui șir de text
    • Stocați șiruri de text folosind funcția de grupare a expresiilor regex cu comenzi rapide
  • Acum ce?
    • Cum ai descompune asta?
  • Începeți să utilizați regex cu comenzi rapide pentru a vă duce automatizarea la următorul nivel
    • Postări asemănatoare:

Ce sunt expresiile regulate (adică regex)?

O expresie regulată, sau „regex”, este un fragment de cod pe care îl puteți folosi pentru a căuta o bucată de text în interiorul unei porțiuni mai mari de text.

În cazul în care nu știți, o bucată de text dintr-o altă bucată de text se numește „șir” în programare. De exemplu, cuvântul „verde” este un șir de caractere din textul „Am purtat pantaloni verzi astăzi”.

Deci, altfel spus, regex este o modalitate de a localiza un șir de text într-un corp de text mai mare. Și pentru că regex este scris în cod, îl puteți folosi pentru a efectua unele operații destul de complexe.

De exemplu, dacă doriți să căutați cuvântul „e-mail”, puteți scrie cu ușurință un cod regex care caută e-mail.

Totuși, dacă doriți să găsiți un e-mail care se află în interiorul unui paragraf și nu știți exact ce este acel e-mail, atunci va trebui să căutați un șir de text care este formatat ca un e-mail. adică un șir care urmează „[email protected]” format.

Acum, să presupunem că nu numai că doriți să găsiți un e-mail dintr-un paragraf, dar fiecare e-mail. Poate doriți să le copiați rapid în altă parte, să le actualizați la un nou format sau să le înlocuiți astfel încât să spună toate „[email protected]“.

Pe măsură ce deveniți din ce în ce mai pricepuți și experimentați cu regex, veți putea face toate aceste lucruri și multe altele.

Lucruri pe care le puteți face cu regex

Bine, deci poate exemplele de e-mail pe care tocmai le-am dat nu sunt atât de practice. Nu vă faceți griji - aceasta este departe de limita a ceea ce puteți realiza folosind regex cu aplicația Comenzi rapide.

În general, tot ceea ce poate face regex se încadrează într-una dintre aceste patru categorii:

  1. Găsiți un șir de text într-o bucată mai mare de text (adică, căutarea unui cuvânt/șir/tip de șir pe o pagină de text).
  2. Confirmați că un șir de text se potrivește cu formatul dorit (de exemplu, verificați dacă un șir de text este scris cu majuscule/ordonat/punctat corect).
  3. Înlocuiți sau inserați text într-o anumită zonă a unei porțiuni de text.
  4. Împărțiți un șir de text în anumite puncte (de exemplu, împărțiți o bucată de text de fiecare dată când există o virgulă).

Nivelul de profunzime pe care îl puteți utiliza pentru a interacționa cu fiecare dintre aceste tipuri de funcții și modul în care le puteți combina fac regex un instrument incredibil de puternic pentru analizarea și manipularea textului.

Cum puteți utiliza expresia regex cu aplicația Comenzi rapide?

Bine, deci acum sperăm că aveți o idee de bază despre ce este folosită expresia regex. Este un tip de cod pe care îl poți folosi pentru a căuta text, chiar dacă nu știi exact ce este acel text.

Deci, cum vă ajută acest lucru în Comenzi rapide? Similar cu adăugarea de scripturi la comenzile rapide, este o modalitate de a trece de la automatizările de bază (Scrie-mi când ușa din față se deschide) la opțiuni mai avansate (Creați automat un eveniment din calendar pentru întâlnirile mele de fiecare dată când primesc un e-mail pentru o întâlnire Zoom de la serviciu).

Puteți utiliza regex cu comenzi rapide pentru a verifica dacă o intrare este corectă. De exemplu, dacă creați o comandă rapidă care funcționează numai cu adrese URL, puteți utiliza regex la începutul comenzii rapide pentru a vă asigura că utilizatorul execută automatizarea pe o adresă URL.

Puteți combina expresiile regex cu scripturile pentru a crea comenzi rapide puternice. De exemplu, această comandă rapidă folosește regex și scripting pentru a transforma un cod de bare într-o adresă URL pentru magazinul tău preferat.

Când utilizați aplicația Comenzi rapide pe Mac (în toamna anului 2021), puteți utiliza regex pentru a efectua acțiuni în lot pe o bucată de text. De exemplu, puteți copia toate e-mailurile dintr-o selecție de text ca o listă ordonată. Sau puteți înlocui toate numele dintr-un document cu caractere „*” pentru a asigura confidențialitatea.

Puteți chiar să copiați un corp de text dintr-o aplicație, să îl reformatați pentru a se potrivi cu preferințele altei aplicații și apoi să-l lipiți în acea altă aplicație, totul cu o singură acțiune de clic dreapta.

Cu alte cuvinte, regex vă oferă control total asupra gestionării textului cu aplicația Comenzi rapide. S-ar putea să nu sune foarte util la început, dar acum că știți că există, veți începe cu siguranță să observați câte comenzi rapide ar putea fi îmbunătățite de această funcție. Și veți observa, de asemenea, că o mulțime de comenzi rapide nici măcar nu sunt posibile fără regex.

Utilizați regex101.com pentru a vă testa expresiile regulate

Odată ce începeți să utilizați regex cu comenzi rapide, veți întâlni un punct de frustrare:

Este foarte dificil să-ți testezi codul regex. Și asta nu este unic pentru regex. Testarea a ceva cu aplicația Comenzi rapide este un fel de durere. Singura modalitate de a face acest lucru este să rulați comanda rapidă. Această metodă nu este rea atunci când doar testați funcțiile de Comenzi rapide încorporate.

Dar pentru testarea codului, acest lucru nu permite verificarea linie cu linie și nu oferă prea mult feedback.

Pentru asta, aș recomanda să utilizați regex101.com. Este un site în care puteți introduce cod regex în timp real. De asemenea, puteți introduce text într-un editor de text pe aceeași pagină web. Pe măsură ce tastați fiecare, veți vedea dacă regex funcționează, de ce funcționează sau nu și veți obține informații despre potrivirile găsite.

regex101.com folosește o aromă diferită de expresie regex decât cea acceptată de Comenzi rapide (mai multe despre asta într-un minut), dar este suficient de aproape încât să nu întâmpinați prea multe probleme.

Utilizarea acestui instrument este grozavă, deoarece puteți scrie mai întâi expresia regex acolo, apoi o copiați în aplicația Comenzi rapide odată ce funcționează conform intenției.

Dacă nu doriți să învățați cum să utilizați expresia regex cu aplicația Comenzi rapide, citiți aceasta

Am înțeles – nu toată lumea va dori să învețe cum să folosească expresia regex cu comenzile rapide. Este o abilitate și asta înseamnă că va necesita timp și practică. Nu este nici pe departe la fel de simplu ca restul funcțiilor de glisare și plasare ale aplicației Comenzi rapide.

Nu vă faceți griji! Deși nu veți putea obține la fel de mult din aplicația Comenzi rapide ca cineva care își acordă timp pentru a învăța regex, există încă opțiuni disponibile pentru dvs. Și anume, există site-uri și pagini online în care oamenii au creat o listă de coduri regex pe care le puteți copia și lipi în aplicația Comenzi rapide.

Iată câteva link-uri pe care să le verificați dacă nu doriți să învățați regex:

  • https://www.shortcutfoo.com/app/dojos/regex/cheatsheet
  • https://www.reddit.com/r/shortcuts/comments/9zo24n/regex_cookbook_for_shortcuts_reusable_regex_to/
  • https://www.reddit.com/r/shortcuts/comments/b5labq/match_text_examples_for_the_beginner_a_regex/
  • http://www.rexegg.com/regex-cookbook.html

Doar citiți aceste linkuri și ar trebui să puteți găsi soluții regex comune pentru comenzile rapide pe care doriți să le faceți. Aceasta nu va fi o opțiune fără educație, deoarece va dura încă puțin pentru a înțelege ceea ce vă uitați. Dar este mult mai simplu și o soluție ideală pentru cineva care nu are timp să pună în regex.

Acestea fiind spuse, trebuie să recunosc că regex nu este prea greu de învățat, mai ales dacă aveți ceva experiență cu codul shell sau cu programarea pentru începători. Regex mi s-a părut o farfurie la început, dar după o oră de citit articole și de jucat cu regex101.com, am putut începe să scriu regex pentru comenzile mele rapide.

Este doar o chestie de familiaritate – după ce te uiți la el suficient de mult, nu va mai arăta atât de ciudat. Deci, dacă aveți timp și sunteți doar intimidat, nu fiți!

Regex pentru începători: începeți să utilizați regex cu comenzi rapide

Bine, destulă prefață! Ar trebui să aveți o idee despre ce este regex, ce poate face, de ce ar trebui să o învățați și suficiente informații pentru a decide dacă doriți să o învățați. Acum vom intra în mie.

Există o mulțime de conținut mai jos, dar nu vă faceți griji! Acest articol va fi mai mult un ghid de studiu. Vă recomand să treceți peste fiecare secțiune, astfel încât să vă faceți o idee despre mecanica pe care o folosește regex. Acest lucru ar trebui să vă ajute, de asemenea, să vă învăluiți capul în jurul acestuia, dacă încă sunteți confuz cu privire la ce este regex.

Odată ce ați parcurs lucrurile, vă recomand să deschideți regex101.com și să vă jucați cu fiecare dintre instrumentele din fiecare secțiune de mai jos. Acest lucru vă va ajuta să vedeți cum arată conceptele în practică, precum și să vă îmbunătățiți memoria. După ce ați făcut asta, puteți trata acest articol ca pe un punct de referință - ceva la care vă puteți întoarce când uitați de fragmentele regex.

OK hai să mergem!

Ce sunt aromele regex?

În primul rând, ne vom uita la aromele regex. Nu vă faceți griji – acest lucru nu vă va afecta utilizarea de zi cu zi a expresiilor regex cu comenzile rapide. Este doar ceva de care trebuie să fii conștient înainte de a începe.

Există diferite versiuni de regex care sunt cunoscute sub numele de „arome”. Aceste versiuni diferite sunt încă foarte asemănătoare. Dacă poți învăța să citești și să scrii o singură aromă, ar trebui să poți citi oricare dintre ele. Vor exista doar mici diferențe în modul în care ar trebui formatat codul regex.

În programare, aceste specificații de formatare sunt cunoscute ca „sintaxă”. Este doar modul în care trebuie să vă scrieți codul pentru ca acel cod să fie înțeles de aplicația în care îl scrieți.

Iată de ce contează sintaxa

„Hei, prietene, cum decurge ziua?”

„, pleacă prietene? Hei ziua ta cum”

Ambele propoziții au aceleași cuvinte, caractere și spații. Numai unul are sens, totuși, și asta pentru că urmează sintaxa convențională.

În codificare, un limbaj de programare ar putea înțelege prima versiune, dar nu și a doua. Pentru un alt limbaj de programare, totuși, al doilea ar putea avea un sens total, în timp ce primul arată ca o farsă. Cuiva care poate vorbi engleza, probabil că puteți înțelege intenția ambelor rânduri, chiar dacă unul va avea nevoie de puțină muncă pentru a înțelege sensul.

Cam așa sunt (cumva) diferitele arome de regex. Toate vor arăta puțin diferite și puțin asemănătoare cu tine. Dar trebuie să utilizați varianta potrivită pentru aplicația pe care o utilizați, altfel acea aplicație nu va avea nicio idee despre ce ați scris.

Aplicația Shortcuts înțelege aroma ICU a expresiilor regex, așa că aceasta este aroma pe care veți dori să o utilizați. Site-ul regex101.com are câteva arome diferite din care puteți alege în partea stângă a paginii. Cu toate acestea, folosește PCRE, care este destul de similar cu ICU.

Este important să știți că există diferite arome de regex, deoarece, fără îndoială, veți întâlni diferite arome online. Dacă găsiți un pic de expresie regex pe care doriți să o furați, dar nu o puteți face să funcționeze cu Comenzi rapide sau pur și simplu nu arată corect, verificați în ce aromă este scrisă!

Site-uri web și referințe pentru a vă ajuta să începeți să învățați expresii regex cu comenzi rapide

Un alt lucru pe care vreau să-l acopăr înainte de a începe să explorăm mecanica reală a scrierii regex sunt resursele. Nu pretind în niciun caz că această postare este o resursă exhaustivă despre învățarea expresiilor regex. Este doar menit să fie un punct de plecare util pentru cei care doresc să folosească expresii regex cu comenzi rapide.

Dacă doriți să vă aprofundați în regex sau să simțiți că acest articol nu vă oferă ajutorul de care aveți nevoie, puteți consulta câteva dintre aceste articole, ghiduri și instrumente:

  • https://regex101.com – Un site web care vă permite să testați codul regex în timp real.
  • https://www.shortcutfoo.com/app/dojos/regex/cheatsheet – O foaie de cheat pentru când uiți ce face fiecare personaj
  • http://www.rexegg.com – Acest site web este o resursă cuprinzătoare pentru a învăța tot ceea ce trebuie să știți despre regex. Verifică-l pe acesta dacă vrei să devii priceput cu regex.
  • https://scottwillsey.com/blog/ios/regex1/ – Aceasta este o serie de bloguri în patru părți despre utilizarea expresiilor regex cu comenzi rapide. Am o abordare foarte diferită față de acest ghid, așa că ar trebui să fie o serie însoțitoare frumoasă pentru acest articol.
  • Stack Overflow și Reddit sunt ambele site-uri web bune pentru a vă împărtăși întrebările regex și a progresa pentru a obține sfaturi și răspunsuri.

Aceste resurse sunt distincte de cele enumerate în Dacă nu doriți să învățați cum să utilizați expresia regex cu aplicația Comenzi rapide secțiunea, deoarece toate vă vor cere să începeți să învățați expresii regex. Sunt mai cuprinzătoare, în timp ce celelalte sunt doar puncte de referință.

Cum se efectuează o căutare de text de bază utilizând expresia regulă cu comenzi rapide

Bine! Am ajuns acum la punctul pe care toată lumea l-a așteptat: vom învăța elementele fundamentale ale utilizării expresiilor regex cu comenzi rapide.

Să începem cu o căutare de bază, deoarece acesta este cel mai simplu lucru pe care îl puteți face cu regex. După cum am menționat anterior, vă recomand să deschideți regex101.com într-o altă filă, astfel încât să puteți urmări.

Cel mai elementar, expresia regex va căuta (sau Meci) orice ai introduce în el. De exemplu, dacă ar fi să tastez În regulă ca codul meu regex, ar găsi fiecare instanță a cuvântului „Bine” în acest ghid.

Majusculele, spațiile și semnele de punctuație contează. Asta inseamna ca În regulă, bine, Bine!, și bine, toate vor produce rezultate diferite.

Si asta e! Ori de câte ori introduceți ceva într-o căutare regex fără a utiliza caractere speciale, regex se va potrivi cu orice se potrivește exact cu orice ați tastat.

Există o captură! Unele caractere de pe tastatură sunt, de asemenea, caractere regex speciale. Asta înseamnă că îndeplinesc un fel de funcție în codul regex.

The ? simbolul este un astfel de caracter. Este folosit în codul regex ca cuantificator. Deci, dacă încercați să căutați „Bine?” prin tastare bine? ca cod regex, nu veți obține ceea ce doriți.

Pentru a remedia acest lucru, trebuie să specificați că doriți să utilizați „?” ca șir, nu ca caracter special. Pentru a face asta pentru acest personaj sau pentru oricare altul, trebuie doar să adăugați un \ simbol chiar înaintea caracterului ale cărui proprietăți speciale doriți să le anulați.

Deci, dacă doriți să căutați „Bine?” cu regex, codul tău va arăta astfel:

bine\?

Dacă nu sunteți sigur dacă un anumit caracter este tratat ca un caracter special de regex, puteți verifica această foaie de cheat pentru toate caracterele speciale din regex.

Căutați mai mult de un cuvânt folosind caracterul „sau”.

O altă componentă importantă a căutării șirurilor de caractere cu regex este utilizarea funcției „sau”. Acesta este un personaj pe care îl puteți plasa între două cuvinte/caractere pentru a spune „Potriviți asta sau asta”.

De exemplu, dacă vreau să caut într-un corp de text cuvântul „în regulă” și „în regulă”, aș folosi | caracter. Ca astfel:

Bine|bine

Dacă vă este greu să găsiți | caracter, ține schimb tasta jos și apăsați tasta \ cheie. Este deasupra întoarcere tasta de pe majoritatea tastaturilor.

Adăugarea de componente variabile la căutările regex

Ok, acum că știi cum este regex neutru, este timpul să iei primul tău caracter special. Acestea ar fi parantezele drepte, care sunt aceste lucruri [].

Orice ați pune în aceste paranteze va fi considerat o componentă variabilă a căutării dvs. regex. Puteți pune în paranteze câte caractere doriți, deși doar unul va fi valabil pe meci.

Bine, sună puțin complicat, dar nu este! Iată cum arată în practică:

  • [A]bine se va potrivi doar cu cuvântul „Bine”. Cam fără rost.
  • [AB] bine se va potrivi atât „Alright” cât și „Blright”.
  • Alr[iouxyz]ght se va potrivi cu „Alright”, „Alright”, „Alrught”, „Alrxght” și așa mai departe.

Puteți combina caractere între paranteze și puteți utiliza mai multe paranteze în aceeași linie de expresii regex. [AB]r[i1]gh[tuvwxyz] este o bucată validă de expresie regex. Cu toate acestea, sperăm că nu pare atât de haotic pe cât ar putea fi acum câteva minute!

Intervalele vă pot extinde căutarea

Următorul bit de expresie regex care va fi util cu comenzile rapide este intervalul. Intervalele vă permit să specificați un interval de caractere pe care îl veți accepta.

În secțiunea anterioară, poate ați observat că parantezele mele includeau o mulțime de litere consecutive. Cel mai lung a fost [tuvwxyz]. Acele litere apar în alfabet în aceeași ordine, chiar una lângă alta.

Asta înseamnă că aș putea folosi un interval în loc să le scriu. Asta ar arata asa:

bine[t-z]

Această bucată de cod regex va face același lucru ca și bine[tuvwxyz]. Este doar mai ordonat și mai ușor de scris.

Ai putea înlocui aceeași gamă cu [a-z] dacă vrei să accepte orice literă mică din alfabet. Sau ai putea folosi [0-9] dacă doriți să acceptați orice număr dintr-o singură cifră.

De asemenea, puteți combina intervale în cadrul aceleiași paranteze. De exemplu, asta Alr[i-ux-z]ght va accepta „Alright”, „Alroght”, „Alrxght” și „Alryght”, dar nu va accepta „Alraght” sau „Alrvght”.

Există și alte variante ale cuvântului „Bine” pe care acest cod le va accepta, apropo, și multe altele pe care nu le va accepta. Aceasta este doar o selecție scurtă pentru a menține lucrurile, ei bine, scurte.

Dacă îți este greu să înțelegi ce [i-ux-z] înseamnă că ar putea ajuta să-l vezi scris astfel:

[i-u, x-z]

Aceasta nu este sintaxa regex corectă - nu ar trebui să folosiți virgulă pentru a separa intervalele. Dar sperăm că asta îl ajută să aibă mai mult sens!

Nu aveți nevoie de virgule în regex pentru a separa intervalele și nu trebuie să puneți intervale unul lângă celălalt. Ai putea să-l schimbi în [i-uabcx-z]. Acest lucru ar accepta aceleași intervale ca înainte plus caracterele „a”, „b” și „c”.

Cum să excludeți cuvinte și caractere din căutările regex cu comenzi rapide

Ok, deci acum ajungem undeva! Dacă ați urmat acest articol până în acest moment, ar trebui să puteți privi codul de mai jos și să înțelegeți pentru ce se potrivește:

Ap[p-r]le[Tt]ool[BbLF]ox

Dacă îl puteți citi, atunci știți că acea bucată de cod regex include mult a posibilelor variații ale cuvântului „AppleToolBox”. Ce se întâmplă dacă am dori să reducem numărul de variații pe care le acceptă fără a ne modifica gama?

Aici intervine personajul „nu”. Arata cam asa: ^. Dacă îți este greu să-l găsești pe tastatură (cum am făcut-o eu), ține apăsat schimb și apăsați tasta 6 tasta de pe tastatură.

Pentru a utiliza ^ caracter, plasați-l la începutul personajului pe care doriți să-l excludeți.

Există o captură! The ^ caracterul nu funcționează în afara unei funcții regex. Nu o puteți plasa doar în fața literei „A” pentru a exclude acea literă din căutarea dvs. Codul regex ^A va căuta doar un „A” mare.

În schimb, combinați-l cu paranteze și alte caractere speciale regex.

De exemplu, dacă aș vrea să caut orice exemplu a cuvântului „Bine” care nu începe cu litera „A”, aș folosi codul [^A]bine.

Îl poți combina chiar și cu gamele! Doar puneți-l la începutul parantezei dvs. și orice din acea paranteză, inclusiv intervalele, va fi exclus din căutarea dvs. Ca astfel:

Ce se întâmplă dacă doriți să excludeți un anumit cuvânt din căutarea dvs.?

Mi-a fost greu să găsesc această informație. Totuși, un utilizator Stack Overflow a avut soluția și arată astfel:

^(?!(cuvântul)$).+$

Doar înlocuiți cuvânt cu orice cuvânt pe care doriți să îl excludeți din căutarea dvs. Ca astfel:

Puteți citi acea postare Stack Overflow Aici dacă doriți să aflați mai multe despre acest caz de utilizare specific.

Wildcard-urile vă pot oferi mai multe opțiuni de căutare

Asta ne duce la wildcards. Caracterul wildcard, care este un punct ., este folosit pentru a reprezenta orice caracter unic, cu excepția niciunui. Dacă tastați doar . ca cod regex cu Comenzi rapide, va returna fiecare caracter dintr-un corp de text ca o potrivire individuală.

Nu aș recomanda să-l folosiți în acest scop, desigur! În schimb, recomand să-l folosești în locul unui singur caracter dintr-un cuvânt. De exemplu, În regulă se va potrivi cu „Alright”, „Alrxght”, „Alr

Și cam asta este! Caracterul wildcard este destul de ușor de înțeles. Se potrivește cu toate! Acest lucru îl face util pentru găsirea șirurilor care se potrivesc cu un anumit format, având în același timp caractere unice.

E-mailurile, de exemplu, vor arăta toate destul de asemănătoare, fără a fi la fel. Caracterul metalic vă poate ajuta să combinați elementele despre care știți că vor fi acolo (cum ar fi „.com” și „@”) cu caractere pe care nu le cunoașteți (cum ar fi „my_email567”, iCloud sau „Gmail”).

Un alt caz de utilizare interesant este utilizarea . caracter pentru a găsi șiruri de o anumită lungime.

De exemplu, dacă vreau să găsesc fiecare șir de patru caractere dintr-un corp de text, aș putea folosi ... cu un spațiu pe ambele părți.

Și iată toate șirurile de șapte caractere din același corp de text:

Rețineți că aceasta nu este o metodă perfectă pentru a găsi șiruri de o anumită lungime. După cum puteți vedea în exemplele de mai sus, unele șiruri sunt potrivite care nu ar trebui să fie, iar unele care ar trebui să fie ignorate. Este doar interesant de reținut că puteți utiliza . caracter pentru a număra caracterele.

De asemenea, rețineți că . este un caracter special în regex. Asta înseamnă că va trebui să adăugați un \ în fața lui dacă vrei să cauți perioade. Asta înseamnă că ar trebui să folosești Bine\. pentru a se potrivi cu „Bine”.

Utilizați cuantificatori pentru a specifica lungimea textului pe care îl căutați

În regulă, așa că puteți utiliza tehnic . caracter pentru a găsi un șir care ocupă un anumit număr de caractere. De cele mai multe ori, totuși, vei dori să fii mai specific.

Aici intervin cuantificatorii. Cuantificatorii vă permit să specificați lungimea șirului pe care îl căutați atunci când utilizați regex cu comenzi rapide.

De exemplu, să presupunem că doriți să găsiți orice cuvânt care are în mod specific trei litere. Pentru a specifica acest lucru, veți dori să utilizați aceste paranteze:

{}

Când plasați aceste paranteze după acestea [] paranteze, specificați că doriți un șir care să se potrivească cu numărul de caractere din acesta {} și intervalul de caractere specificat în aceasta [].

Sunt sigur că nu are prea mult sens acum, așa că hai să ne uităm la un exemplu!

Să presupunem că doriți să găsiți anii menționați într-un corp de text. Deoarece un an este format din patru numere (evident, nu în fiecare an din toate timpurile, doar urmărește-mă aici), puteți folosi acest cod pentru a potrivi anii din acel text:

[0-9]{4}

Acest cod spune că vrem un șir format din caractere de la 0 la 9, care are în special patru caractere. Puteți vedea cum localizează acest șir specific în următoarea captură de ecran:

Ar trebui să rețin că există unele probleme cu acest cod regex și anume că nu ține cont de spații sau semne de punctuație. Deci, dacă codul găsește un număr mai lung de patru caractere, cum ar fi „12345678”, va găsi șirul „1234” și șirul „5678”.

Pentru a remedia această problemă, ați dori să adăugați un spațiu la începutul codului și o paranteză după {4} care conține un alt spațiu, un punct, un semn de întrebare, o virgulă și un semn de exclamare. În acest fel, va trece cu vederea șirurile lungi de numere fără a pierde șirurile de numere care au punctuația la sfârșitul lor în loc de spațiu.

De asemenea, este posibil să doriți să utilizați cuantificatori pentru a specifica mai mult de o lungime de șir. De exemplu, poate vreau să găsesc un șir de patru caractere lungime, dar și șapte și unsprezece, de asemenea. Iată cum ar arăta:

[a-z]{4,7,11}

Mai sunt câțiva cuantificatori despre care veți dori să știți

Ok, deci mai sunt mai multe cuantificatoare! Aceste ultime câțiva cuantificatori sunt pentru atunci când doriți să specificați lungimea unui șir fără a fi prea specific.

De exemplu, să presupunem că doriți să găsiți un șir de orice lungime cu care regex se poate potrivi. Ca un nume! Numele (în țările occidentale) încep cu o literă mare și se termină cu o cantitate aleatorie de litere mici, urmate de un spațiu. Pentru a găsi un nume, trebuie să scrieți următorul cod:

[A-Z][a-z]*

[A-Z] specifică că primul caracter al șirului trebuie să fie o literă majusculă. [a-z]* specifică că restul șirului ar trebui să fie format din litere mici, dar nu contează câte litere urmează. Iar spațiul de la sfârșit înseamnă că se va încheia potrivirea odată ce va găsi un spațiu la sfârșitul literelor mici.

O combinație de aur în regex este .*. Asta înseamnă potriviți orice personaj la infinit. Cu alte cuvinte, se va potrivi întregului corp de text ca un singur articol.

Următorul cuantificator pe care trebuie să-l cunoașteți este +. Acesta este exact ca * cu excepția faptului că nu se va potrivi cu un șir cu zero caractere. * se va potrivi cu orice lungime de șir, care include șiruri care nu au lungime. +, pe de altă parte, are nevoie de un șir cu cel puțin un caracter sau mai multe.

În cele din urmă, există ? cuantificator. Acesta este unul ciudat. Specifică faptul că un șir are fie zero caractere, fie un caracter. Asta este - fie nimic, fie doar unul. Deci, dacă folosești codul [a-z]? cu un spațiu la început și la sfârșit, va căuta litere simple într-un corp de text.

Căutați caractere la începutul și la sfârșitul unui șir de text

Ne apropiem de sfârșitul ghidului nostru despre utilizarea expresiilor regex cu comenzi rapide! Există doar două tipuri de cod regex pe care le veți folosi cu comenzile rapide.

Primele sunt caracterele care vă permit să potriviți șirurile în funcție de modul în care încep și/sau se termină.

Când nu este între paranteze, ^ rolul personajului se schimbă de la sensul „exclude” la „începe cu”. Specifică că un șir trebuie să înceapă cu orice doriți. De exemplu, dacă scrii ^A, care s-ar potrivi cu litera „A” din șirurile „Alright”, „Apple” și „A”.

Totuși, nu se potrivește cu întregul cuvânt. Pentru asta, ar trebui să-l schimbi în ^A[A-Za-z]*. Acesta se va potrivi cu primul cuvânt al unui paragraf/șir, atâta timp cât acel cuvânt începe cu un „A” majuscul.

Ca o notă secundară, puteți scrie [A-Za-z] la fel de [A-z]. Înseamnă același lucru, doar constat că primul este puțin mai clar când înveți.

Pentru a specifica sfârșitul șirului, veți dori să utilizați $ caracter. Funcționează la fel ca și ^ caracter. Singura diferență este că îl scrieți la sfârșitul unei paranteze/șir, mai degrabă decât la început.

De exemplu, dacă doriți să găsiți șiruri/paragrafe care se termină cu „le”, ați folosi codul [A-z]*le$. Aceasta se va potrivi cu „Tabel”, „măr” și „capabil”, atâta timp cât acestea se află la sfârșitul unui șir sau al unui paragraf.

Regex va refuza chiar această potrivire dacă există un spațiu sau un semn de punctuație la sfârșitul șirului. "Masa." nu va fi egalat de acest cod.

Pentru a remedia acest lucru, puteți lua în considerare semnele de punctuație. Acest cod ține seama de diferitele forme de punctuație și spațiere care ar putea apărea la sfârșitul unui șir, inclusiv un semn de punctuație urmat de un spațiu:

[A-z]*(le[\.\?!, ]?[ ]?)$

Codul respectiv se va potrivi cu „Capac”, „tabel”, „stabil” și „capabil? “.

Stocați șiruri de text folosind funcția de grupare a expresiilor regex cu comenzi rapide

Bine! Ați ajuns la sfârșitul ghidului nostru AppleToolBox despre utilizarea expresiilor regex cu comenzi rapide. Mai există o singură funcție regex de învățat și aceasta este gruparea.

Gruparea este, fără îndoială, cea mai importantă caracteristică a regex, deoarece este ceea ce vă permite să faceți lucruri cu codul regex pe care îl scrieți. Fără el, regex este doar o funcție de căutare. Vă poate spune doar dacă un șir există într-un corp mai mare de text, adică va returna „adevărat” sau „fals”.

Cu gruparea, totuși, puteți stoca rezultatele codului regex. Și asta înseamnă că puteți copia potrivirile, le puteți stoca în variabile, le puteți înlocui cu alt text, le puteți modifica formatarea și orice altceva doriți să faceți cu regex.

Din fericire, gruparea este super ușoară! Puneți tot ce doriți să grupați între paranteze (). Orice ai pune în paranteză va fi tratat ca un grup.

Dacă puneți o linie întreagă de cod regex între paranteze, cum ar fi (.*@.*\..{3}), atunci acel grup va fi rememorat de codul dvs., ceea ce va permite să fie rechemat mai târziu pe linie.

Este important să folosiți grupuri doar ori de câte ori aveți nevoie. Deoarece sunt stocate în memorie, pot duce la scăderea performanței codului dvs. Salvați grupurile pentru atunci când sunt necesare!

Puteți folosi grupuri și pentru organizare

De asemenea, puteți utiliza grupuri pentru a vă organiza codul regex cu comenzi rapide. Când faceți acest lucru, grupul din paranteze nu va fi neapărat amintit.

De exemplu, spuneți că vreau să potrivesc cuvântul „Bună ziua”, cu excepția faptului că nu-mi pasă care este ultima literă. Poate fi orice literă mică sau mare sau chiar un număr. „Hell3838djdjajaksks” și „Hello” ar trebui să fie considerate ca potriviri. „Iadul”, pe de altă parte, nu trebuie luat în calcul.

Pentru ca acest lucru să funcționeze, scriu codul Iadul[A-z]|[0-9]+. Dar acesta este rezultatul pe care îl obțin:

Motivul pentru care nu se potrivește așa cum mă așteptam este că + se aplică doar la [0-9] paranteză. Am nevoie să se aplice la ambele paranteze.

În plus, acest cod spune că vreau fie Iadul[A-z]sau[0-9]. Deci, se potrivește cuvintele care încep cu „Iad” și se termină cu o literă sau caută orice șir de numere. Ceea ce am nevoie de fapt este ca acesta să se potrivească cu exemplele cuvântului „Iad” care se termină cu o literă sau un număr.

Pentru a remedia acest lucru, pot folosi un grup și pot rescrie codul ca Iadul([A-z]|[0-9])+. Acum, caută cuvântul „Iad” urmat de orice literă sau număr. Și pentru că + se aplică la ambele paranteze, poate fi orice combinație de litere și cifre, atâta timp cât există cel puțin o literă sau un număr prezent.

După cum puteți vedea în captura de ecran de mai jos, acest grup îmi rezolvă problema fără a stoca neapărat informațiile în acel grup:

Acum ce?

Si asta e! Acesta este aproape tot ce ați putea dori să știți despre utilizarea expresiilor regex cu comenzi rapide. Să sperăm că te simți suficient de încrezător pentru a începe să experimentezi regex acum, chiar dacă nu a avut sens pentru tine la început.

Acum că cunoașteți elementele de bază ale expresiilor regex, sunteți gata să începeți să o utilizați în comenzile rapide! Comenzile rapide acceptă introducerea regex în următoarele acțiuni:

  • Potriviți textul
  • Înlocuiește textul

Folosind aceste două acțiuni de Comenzi rapide, puteți insera expresii regex în Comenzile rapide.

Asociați acest lucru cu capacitățile de automatizare ale comenzilor rapide și aveți la dispoziție un instrument destul de puternic.

Puteți utiliza regex pentru a ușura formatarea textului în Comenzi rapide, pentru a extrage informații din e-mailuri, texte, site-uri web, fișiere și evenimente din calendar, creați text care urmează un format specificat, verificați dacă introducerea a fost introdusă corect și Mai Mult.

De exemplu, să presupunem că doriți să potriviți pentru e-mailuri. Poate că trebuie să verificați dacă un șir de text este un e-mail sau poate doriți să extrageți un e-mail(e) dintr-un corp de text.

Cum ai descompune asta?

Ei bine, știți că structura de bază a unui e-mail va fi o combinație de litere, cifre și caractere, urmată de simbolul „@”, apoi urmat de numele unui site web cum ar fi Gmail sau iCloud, care este apoi urmat de un „.com”, „.org” sau un alt tip de trei caractere de nivel superior domeniu.

Pentru a scrie asta în regex, trebuie să specificați că doriți un șir de cel puțin un caracter lung care este urmat imediat de simbolul „@”, apoi un alt șir de cel puțin un caracter, urmat de un „.”, apoi urmat de un șir de trei personaje. Asta ar arata asa:

[email protected]+\..{3}

Dacă lipiți acest lucru în Potriviți textul sau Înlocuiește textul acțiuni în Comenzi rapide, veți avea o automatizare care poate găsi, stoca și manipula o adresă de e-mail.

Puteți folosi acest tip de rezolvare a problemelor pentru a găsi propriile soluții regex sau pentru a găsi unele pe care alții le-au făcut online!

Începeți să utilizați regex cu comenzi rapide pentru a vă duce automatizarea la următorul nivel

Și asta, prieteni, chiar este. Sper că ți-a plăcut să urmărești împreună cu acest articol! Aceasta este una dintre cele mai ambițioase piese pe care le-am scris vreodată pentru AppleToolBox. A trebuit să mă învăț regex să-l scriu și sper că, făcând asta, te-am putut ajuta să-l înveți.

Folosirea expresiilor regex cu comenzi rapide nu este diferită de a învăța cum să faci orice altceva pe smartphone sau pe computer. Doar pune puțin timp și răbdare și, în cele din urmă, vei ajunge acolo.

Pentru mai multe ghiduri, tutoriale și știri despre toate lucrurile Apple, consultați restul blogul AppleToolBox.

În regulă [A-Z][a-z]+, ne vedem data viitoare!