Kako početi koristiti Regex s aplikacijom Prečaci

Tijekom posljednjih mjesec dana pokrivao sam aplikacije Shortcuts i Automator na iOS-u i macOS-u. Obje su snage kada je u pitanju automatizacija u Apple ekosustavu, a počevši od macOS Monterey ove jeseni, Shortcuts će biti aplikacija za automatizaciju na svim Apple uređajima. Zbog toga sam ovaj članak želio provesti u raspravi o vrlo snažnoj temi: Korištenje redovnog izraza s aplikacijom Prečaci.

Iako imam pozadinu u informatici i programiranju, nekako nikad nisam naišao na regex. Možda me ime prestrašilo, ili je to možda bio kod, koji je jedan od najmanje čitljivih kodova koje sam ikada vidio.

Bez obzira na slučaj, odlučio sam dalje istražiti regex nakon što sam pokrio aplikaciju Prečaci tijekom posljednjih nekoliko mjeseci. I ono što sam otkrio je da se mnoga ograničenja na koja sam nailazila s prečacima, kao i Automatorom, mogu prevladati pomoću regularnog izraza.

Drugim riječima, nije riječ o tome da ovim aplikacijama nedostaju značajke, već da je meni nedostajalo obrazovanje.

Dakle, u današnjem postu, ti i ja ćemo zajedno naučiti detalje o redovnom izrazu. Na taj način možete izvući maksimum iz svake od ovih aplikacija.

Pokriti ćemo osnove redovnog izraza (počevši od onoga što je), što možete učiniti s njim u aplikaciji Prečaci, nekim web-mjesta i resurse koje možete koristiti ako ne želite sami naučiti regex, a zatim ćemo ući u temeljne koncepte i mehaniku redovnog izraza Jezik.

U redu, krenimo!

Sadržaj

  • Što su regularni izrazi (tj. regex)?
    • Stvari koje možete učiniti s regexom
  • Kako možete koristiti regularni izraz s aplikacijom Prečaci?
  • Koristite regex101.com za testiranje regularnih izraza
  • Ako ne želite naučiti kako koristiti regularni izraz s aplikacijom Prečaci, pročitajte ovo
  • Regex za početnike: Počnite koristiti regex s prečacima
    • Što su regex okusi?
    • Web stranice i reference koje će vam pomoći da počnete učiti regularni izraz pomoću prečaca
    • Kako izvesti osnovno pretraživanje teksta pomoću regularnog izraza s prečacima
    • Dodavanje varijabilnih komponenti vašim pretragama regularnih izraza
    • Rasponi mogu proširiti vašu pretragu
    • Kako isključiti riječi i znakove iz pretraživanja regularnih izraza pomoću prečaca
    • Zamjenski znakovi vam mogu dati više opcija pretraživanja
    • Koristite kvantifikatore da biste odredili duljinu teksta koji tražite
    • Postoji još nekoliko kvantifikatora o kojima biste željeli znati
    • Traži znakove na početku i na kraju niza teksta
    • Spremite tekstualne nizove pomoću funkcije grupiranja redovnog izraza s prečacima
  • Što sad?
    • Kako biste ovo raščlanili?
  • Počnite koristiti regularni izraz s prečacima kako biste svoju automatizaciju podigli na sljedeću razinu
    • Vezane objave:

Što su regularni izrazi (tj. regex)?

Regularni izraz ili “regex” je dio koda koji možete koristiti za traženje dijela teksta unutar većeg dijela teksta.

U slučaju da ne znate, dio teksta unutar drugog dijela teksta u programiranju se naziva "string". Na primjer, riječ "zeleno" niz je znakova iz teksta "Danas sam nosio zelene hlače".

Drugim riječima, regex je način lociranja niza teksta u većem dijelu teksta. A budući da je regex napisan u kodu, možete ga koristiti za izvođenje nekih prilično složenih operacija.

Na primjer, ako želite tražiti riječ "e-pošta", možete jednostavno napisati kod za regex koji traži e-poštu.

Ako ipak želite pronaći e-poruku koja je unutar odlomka, a ne znate točno koja je to e-poruka, morat ćete potražiti niz teksta koji je formatiran kao e-poruka. tj. niz koji slijedi nakon "[e-mail zaštićen]" format.

Sada, recimo da ne samo da želite pronaći jednu e-poruku iz odlomka nego svaki email. Možda ih želite brzo kopirati negdje drugdje, ažurirati ih na novi format ili ih zamijeniti tako da svi kažu "[e-mail zaštićen]“.

Kako budete sve iskusniji i iskusniji s regularnim izrazom, moći ćete raditi sve ove stvari i više.

Stvari koje možete učiniti s regexom

Dobro, pa možda primjeri s e-poštom koje sam upravo naveo nisu tako praktični. Ne brinite - to je daleko od granice onoga što možete postići pomoću redovnog izraza s aplikacijom Prečaci.

Općenito govoreći, sve što regex može učiniti spada u jednu od ove četiri kategorije:

  1. Pronađite niz teksta u većem dijelu teksta (tj. tražite riječ/niz/vrstu niza na stranici teksta).
  2. Potvrdite da niz teksta odgovara vašem željenom formatu (tj. provjerite je li niz teksta napisan velikim slovima/redoslijed/ispravno).
  3. Zamijenite ili umetnite tekst u određeno područje teksta.
  4. Podijelite niz teksta na određene točke (npr. podijelite dio teksta svaki put kada postoji zarez).

Razina dubine koju možete koristiti za interakciju sa svakom od ovih vrsta funkcija i način na koji ih možete kombinirati čine regex nevjerojatno moćnim alatom za raščlanjivanje i manipulaciju tekstom.

Kako možete koristiti regularni izraz s aplikacijom Prečaci?

U redu, sada se nadamo da imate osnovnu ideju za što se koristi regex. To je vrsta koda koji možete koristiti za traženje teksta, čak i ako ne znate točno što je to tekst.

Pa kako vam ovo pomaže u prečacima? Slično dodavanju skriptiranja vašim prečacima, to je način da odete od osnovnih automatizacija (Pošalji mi poruku kad se otvore ulazna vrata) na naprednije opcije (Automatski izradi kalendarski događaj za moje sastanke svaki put kada dobijem e-poruku za Zoom sastanak s posla).

Možete koristiti regularni izraz s prečacima da provjerite je li unos točan. Na primjer, ako izradite prečac koji radi samo s URL-ovima, možete koristiti regex na početku prečaca kako biste bili sigurni da korisnik pokreće automatizaciju na URL-u.

Možete kombinirati regularni izraz sa skriptiranjem kako biste stvorili moćne prečace. Na primjer, ovaj prečac koristi regex i skriptiranje za pretvaranje crtičnog koda u URL za vašu omiljenu trgovinu.

Kada koristite aplikaciju Prečaci na Macu (dolazi u jesen 2021.), možete koristiti regex za izvođenje skupnih radnji na komadu teksta. Na primjer, možete kopirati sve e-poruke u odabranom tekstu kao uređeni popis. Ili možete zamijeniti sva imena u dokumentu znakovima "*" kako biste osigurali privatnost.

Možete čak i kopirati dio teksta iz jedne aplikacije, preformatirati ga tako da odgovara postavkama druge aplikacije, a zatim ga zalijepiti u tu drugu aplikaciju, sve s jednom radnjom desnom tipkom miša.

Drugim riječima, regex vam daje potpunu kontrolu nad rukovanjem tekstom pomoću aplikacije Prečaci. To možda u početku neće zvučati od velike pomoći, ali sada kada znate da postoji, sigurno ćete primijetiti koliko bi se prečaca moglo poboljšati ovom značajkom. Također ćete primijetiti da mnogi prečaci nisu ni mogući bez redovnog izraza.

Koristite regex101.com za testiranje regularnih izraza

Kada počnete koristiti regex s prečacima, naići ćete na točku frustracije:

Zaista je teško testirati svoj kod regularnog izraza. I to nije jedinstveno za regex. Testiranje bilo čega s aplikacijom Shortcuts je svojevrsna muka. Jedini način da to učinite je pokretanje prečaca. Ta metoda nije loša kada samo testirate ugrađene značajke prečaca.

Ali za testiranje koda, to ne dopušta provjeru redak po red i ne nudi puno povratnih informacija.

Za to bih preporučio korištenje regex101.com. To je web-mjesto na koje možete upisivati ​​regex kod u stvarnom vremenu. Također možete upisati tekst u uređivač teksta na istoj web stranici. Dok upisujete svaki, vidjet ćete radi li vaš regularni izraz, zašto radi ili ne radi i dobiti informacije o pronađenim podudaranjima.

regex101.com koristi drugačiji okus redovnog izraza od onog koji podržavaju prečaci (više o tome za minutu), ali dovoljno je blizu da ne biste trebali naići na previše problema.

Korištenje ovog alata je sjajno jer tamo prvo možete napisati svoj regex, a zatim ga kopirati u aplikaciju Prečaci kada počne kako treba.

Ako ne želite naučiti kako koristiti regularni izraz s aplikacijom Prečaci, pročitajte ovo

Shvaćam – neće svi htjeti naučiti koristiti regex s prečacima. To je vještina, a to znači da će zahtijevati vrijeme i praksu. Nije ni približno tako jednostavno kao ostale značajke povuci i ispusti u aplikaciji Prečaci.

Bez brige! Iako nećete moći izvući toliko iz aplikacije Prečaci kao netko tko je uložio vrijeme za učenje regularnog izraza, još uvijek su vam dostupne opcije. Naime, postoje web-mjesta i stranice na internetu na kojima su ljudi napravili popis ugriza regex koda koje možete kopirati i zalijepiti u aplikaciju Shortcuts.

Evo nekoliko poveznica koje možete provjeriti ako ne želite naučiti 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

Samo pročitajte te veze i trebali biste moći pronaći uobičajena rješenja regularnih izraza za prečace koje želite napraviti. Ovo neće biti opcija bez obrazovanja, jer će ipak trebati malo da shvatite ono što gledate. Ali to je puno jednostavnije i idealno rješenje za nekoga tko nema vremena stavljati u regex.

Uz to, moram priznati da regex nije previše teško naučiti, pogotovo ako imate iskustva s shell kodom ili početničkim programiranjem. Regex mi je isprva zvučao kao besmislica, ali nakon sat vremena čitanja članaka i igranja s regex101.com, uspio sam početi pisati regex za svoje prečace.

To je samo poznata stvar - nakon što ga dovoljno dugo gledate, prestat će izgledati tako čudno. Dakle, ako imate vremena i samo ste zastrašeni, nemojte biti!

Regex za početnike: Počnite koristiti regex s prečacima

Dobro, dosta predgovora! Trebali biste imati ideju o tome što je regex, što može učiniti, zašto biste ga trebali naučiti i dovoljno informacija da odlučite želite li ga naučiti. Sada ćemo ući u sitnice.

U nastavku ima puno sadržaja, ali ne brinite! Ovaj će članak više biti vodič za učenje. Preporučujem da prijeđete preko svakog odjeljka kako biste dobili ideju o mehanici koju koristi regex. Ovo bi vam također trebalo pomoći da se zamotate oko toga, ako ste još uvijek zbunjeni oko toga što je regex.

Nakon što ste pregledali stvari, preporučam da otvorite regex101.com i igrate se sa svakim od alata u svakom odjeljku u nastavku. To će vam pomoći da vidite kako koncepti izgledaju u praksi, kao i poboljšati vaše pamćenje. Nakon što to učinite, ovaj članak možete samo tretirati kao referentnu točku - nešto na što se možete vratiti kada zaboravite dijelove regularnog izraza.

Ok idemo!

Što su regex okusi?

Prvo ćemo pogledati okuse regexa. Ne brinite - to neće utjecati na vašu svakodnevnu upotrebu redovnog izraza s prečacima. To je samo nešto čega treba biti svjestan prije nego što počnete.

Postoje različite verzije regexa koje su poznate kao "okusi". Ove različite verzije su još uvijek vrlo slične. Ako možete naučiti čitati i pisati jedan okus, trebali biste moći čitati bilo koji od njih. Postojat će samo male razlike u načinu na koji bi vaš regularni izraz trebao biti formatiran.

U programiranju su ove specifičnosti oblikovanja poznate kao "sintaksa". To je samo način na koji morate napisati svoj kod kako bi ga aplikacija u kojoj ga pišete razumjela.

Evo zašto je sintaksa važna

“Hej prijatelju, kako ti ide dan?”

“, ide li prijatelju? tvoj Hej dan kako"

Obje rečenice imaju iste riječi, znakove i razmake. Međutim, samo jedan ima smisla, i to zato što slijedi konvencionalnu sintaksu.

U kodiranju, jedan programski jezik može razumjeti prvu verziju, ali ne i drugu. Za drugi programski jezik, međutim, drugi bi mogao imati potpunog smisla dok prvi izgleda kao besmislica. Nekome tko govori engleski, ipak, vjerojatno možete razumjeti namjeru oba stiha, iako će jedan trebati malo rada da shvati značenje.

To je (nekako) ono što su različiti okusi regexa. Svi će vam izgledati malo drugačije i malo slično. Ali morate koristiti pravi okus za aplikaciju koju koristite, inače ta aplikacija neće imati pojma što ste napisali.

Aplikacija Shortcuts razumije ICU okus regularnog izraza, tako da je to okus koji ćete željeti koristiti. Stranica regex101.com ima nekoliko različitih okusa koje možete birati na lijevoj strani stranice. Ipak, koristi PCRE, koji je prilično sličan ICU.

Važno je znati da postoje različiti okusi regularnog izraza jer ćete bez sumnje naići na različite okuse na internetu. Ako pronađete malo regularnog izraza koji želite ukrasti, ali ga ne možete natjerati da radi s prečacima ili jednostavno ne izgleda kako treba, provjerite u kojem je okusu napisan!

Web stranice i reference koje će vam pomoći da počnete učiti regularni izraz pomoću prečaca

Još jedna stvar koju želim pokriti prije nego što počnemo istraživati ​​stvarnu mehaniku pisanja regularnog izraza su resursi. Nikako ne tvrdim da je ovaj post iscrpan resurs za učenje regularnih izraza. To je samo namijenjeno da bude korisna početna točka za one koji žele koristiti regex s prečacima.

Ako želite dublje zaroniti u regex ili smatrate da vam ovaj članak ne pruža potrebnu pomoć, možete pogledati neke od ovih članaka, vodiča i alata:

  • https://regex101.com – Web stranica koja vam omogućuje da testirate svoj regularni izraz u stvarnom vremenu.
  • https://www.shortcutfoo.com/app/dojos/regex/cheatsheet – cheat sheet za kada zaboravite što svaki lik radi
  • http://www.rexegg.com – Ova je web stranica sveobuhvatan resurs za učenje svega što trebate znati o redovnom izrazu. Provjerite ovo ako želite postati vješti s regularnim izrazom.
  • https://scottwillsey.com/blog/ios/regex1/ – Ovo je četverodijelna serija blogova o korištenju redovnog izraza s prečacima. Zauzimam sasvim drugačiji pristup od ovog vodiča, tako da bi trebao biti zgodna popratna serija ovom članku.
  • Stack Overflow i Reddit su dobre web stranice za dijeljenje pitanja o regularnim izrazima i napredak kako biste dobili savjete i odgovore.

Ti se resursi razlikuju od onih navedenih u Ako ne želite naučiti kako koristiti regularni izraz s aplikacijom Prečaci odjeljak jer će svi zahtijevati da zapravo počnete učiti regex. One su opsežnije, dok su ostale samo referentne točke.

Kako izvesti osnovno pretraživanje teksta pomoću regularnog izraza s prečacima

u redu! Sada smo došli do točke koju su svi čekali: Naučit ćemo osnove korištenja redovnog izraza s prečacima.

Počnimo s osnovnim pretraživanjem, jer je to najjednostavnija stvar koju možete učiniti s regularnim izrazom. Kao što je već spomenuto, preporučujem da se regex101.com otvori na drugoj kartici kako biste mogli pratiti.

U svom najosnovnijem obliku, regex će tražiti (ili podudarati) što god u njega upisali. Na primjer, ako bih tipkala u redu kao moj kod regularnog izraza, pronašao bi svaku instancu riječi "U redu" u ovom vodiču.

Važni su velika i mala slova, razmaci i interpunkcija. To znači da u redu, u redu, u redu!, i u redu , sve će proizvesti različite rezultate.

I to je to! Kad god upišete nešto u pretraživanje regularnog izraza bez upotrebe posebnih znakova, regex će odgovarati svemu što točno odgovara onome što ste upisali.

Postoji jedna kvaka! Neki znakovi na vašoj tipkovnici također su posebni regex znakovi. To znači da oni obavljaju neku vrstu funkcije u regularnom izrazu koda.

The ? simbol je jedan od takvih znakova. Koristi se u kodu regularnog izraza kao kvantifikator. Dakle, ako pokušate potražiti "U redu?" tipkanjem u redu? kao vaš kod regularnog izraza, nećete dobiti ono što želite.

Da biste to popravili, morate navesti da želite koristiti "?" kao niz, a ne kao poseban znak. Da biste to učinili za ovaj ili bilo koji drugi lik, samo dodajte a \ simbol neposredno ispred znaka čija posebna svojstva želite poništiti.

Dakle, ako želite tražiti "U redu?" s regexom, vaš će kod izgledati ovako:

u redu\?

Ako niste sigurni tretira li se određeni znak kao poseban znak pomoću regularnog izraza, možete provjeriti ovu varalicu za sve posebne znakove u regularnom izrazu.

Potražite više od jedne riječi pomoću znaka "ili".

Druga važna komponenta traženja nizova s ​​regularnim izrazom je korištenje funkcije "ili". Ovo je znak koji možete postaviti između dvije riječi/znaka da biste rekli: "Upari ovo ili ovo".

Na primjer, ako želim pretražiti cijeli tekst za riječi "u redu" i "u redu", upotrijebio bih | lik. ovako:

U redu|u redu

Ako vam je teško pronaći | karaktera, držite pomak pritisnite dolje i pritisnite \ ključ. To je iznad povratak tipka na većini tipkovnica.

Dodavanje varijabilnih komponenti vašim pretragama regularnih izraza

U redu, sada kada znate kakav je neutralni regex, vrijeme je da pokupite svoj prvi poseban znak. To bi bile uglaste zagrade, što su ove stvari [].

Što god stavite unutar ovih zagrada smatrat će se promjenjivom komponentom vašeg pretraživanja regularnog izraza. Možete staviti onoliko znakova u zagrade koliko želite, iako će samo jedan biti važeći po podudaranju.

Dobro, to zvuči malo komplicirano, ali nije! Evo kako to izgleda u praksi:

  • [A] dobro samo će odgovarati riječi "U redu". Nekako besmisleno.
  • [AB] u redu odgovarat će i “U redu” i “Blright”.
  • U redu odgovarat će “U redu”, “Alroght”, “Alrught”, “Alrxght” i tako dalje.

Možete kombinirati znakove unutar zagrada, kao i koristiti više zagrada u istom retku regularnog izraza. [AB]r[i1]gh[tuvwxyz] je važeći dio regularnog izraza. Ipak, nadamo se da ne izgleda baš kaotično kao prije nekoliko minuta!

Rasponi mogu proširiti vašu pretragu

Sljedeći dio regularnog izraza koji će biti koristan s prečacima je raspon. Rasponi vam omogućuju da odredite raspon znakova koje ćete prihvatiti.

U prethodnom odjeljku možda ste primijetili da moje zagrade uključuju puno uzastopnih slova. Najduži je bio [tuvwxyz]. Ta se slova pojavljuju u abecedi istim redoslijedom, jedno pored drugog.

To znači da bih mogao koristiti raspon umjesto da ih upisujem. To bi izgledalo ovako:

u redu[t-z]

Ovaj dio koda regularnog izraza učinit će istu stvar kao dobro [tuvwxyz]. Jednostavno je urednije i lakše pisati.

Isti raspon možete zamijeniti s [a-z] ako ste htjeli da prihvati bilo koje malo slovo iz abecede. Ili biste mogli koristiti [0-9] ako ste htjeli prihvatiti bilo koji jednoznamenkasti broj.

Također možete kombinirati raspone unutar iste zagrade. Na primjer, ovo U redu [i-ux-z] prihvatit će “U redu”, “Alroght”, “Alrxght” i “Alryght”, ali neće prihvatiti “Alraght” ili “Alrvght”.

Postoje i druge varijacije riječi "U redu" koje će ovaj kod prihvatiti, usput, i mnoge druge koje neće. To je samo kratak odabir kako bi stvari bile kratke.

Ako vam je teško razumjeti što [i-ux-z] znači, moglo bi pomoći vidjeti da je napisano ovako:

[i-u, x-z]

To nije točna sintaksa regularnog izraza - ne biste trebali koristiti zarez za odvajanje raspona. Ali nadamo se da će to pomoći da ima više smisla!

Ne trebaju vam zarezi u redovnom izrazu za odvajanje raspona i ne morate stavljati raspone jedan pored drugog. Mogli biste ga promijeniti u [i-uabcx-z]. Ovo bi prihvatilo iste raspone kao i prije plus znakove "a", "b" i "c".

Kako isključiti riječi i znakove iz pretraživanja regularnih izraza pomoću prečaca

Ok, sad smo negdje stigli! Ako ste pratili ovaj članak do ove točke, trebali biste moći pogledati kod u nastavku i razumjeti čemu se podudara:

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

Ako ga možete pročitati, onda znate da taj dio koda redovnog izraza uključuje puno mogućih varijacija riječi "AppleToolBox". Pa što ako bismo htjeli smanjiti broj varijacija koje prihvaća bez mijenjanja našeg raspona?

Tu se pojavljuje lik "ne". izgleda ovako: ^. Ako vam je teško pronaći ga na tipkovnici (kao ja), pričekajte pomak i pritisnite 6 tipku na tipkovnici.

Za korištenje ^ znak, stavite ga na početak znaka koji želite isključiti.

Postoji kvaka! The ^ znak ne radi izvan funkcije regularnog izraza. Ne možete ga jednostavno staviti ispred slova "A" kako bi isključilo to slovo iz vašeg pretraživanja. Kod regularnog izraza ^A samo će tražiti veliko "A".

Umjesto toga, kombinirajte ga sa zagradama i drugim posebnim znakovima regularnog izraza.

Na primjer, ako želim potražiti bilo koji primjer riječi "U redu" koja ne počinje slovom "A", upotrijebio bih kod [^A]U redu.

Možete ga čak kombinirati s rasponima! Samo ga stavite na početak svoje zagrade i sve unutar te zagrade, uključujući raspone, bit će isključeno iz vašeg pretraživanja. ovako:

Što ako želite isključiti određenu riječ iz pretraživanja?

Teško sam pronašao ovu informaciju. Ipak, korisnik Stack Overflowa je imao rješenje, a ono izgleda ovako:

^(?!(riječ)$).+$

Samo zamijenite riječ bilo kojom riječju koju želite isključiti iz pretraživanja. ovako:

Možete pročitati tu objavu Stack Overflow ovdje ako želite saznati više o ovom specifičnom slučaju upotrebe.

Zamjenski znakovi vam mogu dati više opcija pretraživanja

To nas dovodi do zamjenskih znakova. Zamjenski znak, koji je točka ., koristi se za predstavljanje bilo kojeg pojedinačnog znaka, bez ikakvog znaka. Ako samo upišete . kao vaš kod regularnog izraza s prečacima, vratit će svaki pojedinačni znak u tijelu teksta kao pojedinačno podudaranje.

Ne bih preporučio korištenje u tu svrhu, naravno! Umjesto toga, preporučujem da ga koristite umjesto jednog znaka u riječi. Na primjer, u redu odgovarat će “U redu”, “Alrxght”, “Alr

I to je poprilično to! Zamjenski znak prilično je lako razumjeti. Sve se slaže! To ga čini korisnim za pronalaženje nizova koji odgovaraju određenom formatu, a imaju jedinstvene znakove.

Na primjer, e-mailovi će izgledati prilično slično, a da ne budu isti. Zamjenski znak vam može pomoći da kombinirate elemente za koje znate da će biti tamo (poput ".com" i "@") sa znakovima koje ne poznajete (poput "my_email567", iCloud ili "Gmail").

Još jedan zanimljiv slučaj uporabe je korištenje . znak za pronalaženje nizova određene duljine.

Na primjer, ako želim pronaći svaki niz od četiri znaka u tekstu, dobro bi mi došlo ... s razmakom s obje strane.

A ovdje su svi nizovi od sedam znakova u istom tekstu:

Imajte na umu da ovo nije savršena metoda za pronalaženje žica određene duljine. Kao što možete vidjeti u gornjim primjerima, neki nizovi se podudaraju koji ne bi trebali biti, a neki koji bi trebali biti zanemareni. Zanimljivo je samo zapamtiti da možete koristiti . znak za brojanje znakova.

Također, imajte na umu da je . je poseban znak u regularnom izrazu. To znači da ćete morati dodati a \ ispred njega ako želite tražiti razdoblja. To znači da ćete morati koristiti u redu\. da odgovara "U redu".

Koristite kvantifikatore da biste odredili duljinu teksta koji tražite

U redu, možete tehnički koristiti . znak za pronalaženje niza koji zauzima određeni broj znakova. Ipak, većinu vremena želite biti konkretniji.

Tu dolaze kvantifikatori. Kvantifikatori vam omogućuju da odredite duljinu niza koji tražite kada koristite regex s prečacima.

Na primjer, recimo da želite pronaći bilo koju riječ koja ima točno tri slova. Da biste to odredili, htjet ćete koristiti ove zagrade:

{}

Kada postavite ove zagrade nakon ovih [] zagradama, navodite da želite niz koji odgovara broju znakova unutar ovoga {} i raspon znakova naveden u ovome [].

Siguran sam da to sada nema puno smisla, pa pogledajmo primjer!

Recimo da želite pronaći sve spomenute godine u cijelom tekstu. Budući da se godina sastoji od četiri broja (očito ne svake godine od svih vremena, samo me pratite ovdje), možete koristiti ovaj kod za podudaranje godina unutar tog teksta:

[0-9]{4}

Ovaj kod govori da želimo niz sastavljen od znakova od 0 do 9 koji je točno dugačak četiri znaka. Možete vidjeti kako locira ovaj određeni niz na sljedećoj snimci zaslona:

Trebao bih napomenuti da postoje neki problemi s ovim kodom regularnog izraza, a to je da ne uzima u obzir razmake ili interpunkciju. Dakle, ako kod pronađe broj duži od četiri znaka, poput "12345678", pronaći će niz "1234" i niz "5678".

Da biste riješili ovaj problem, trebali biste dodati razmak na početak koda i zagradu nakon {4} koji sadrži još jedan razmak, točku, upitnik, zarez i uskličnik. Na taj će način previdjeti duge nizove brojeva bez propuštanja nizova brojeva koji imaju interpunkciju na kraju umjesto razmaka.

Također biste mogli htjeti koristiti kvantifikatore za određivanje više od jedne duljine niza. Na primjer, možda želim pronaći niz dužine četiri znaka, ali i sedam i jedanaest. Evo kako bi to izgledalo:

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

Postoji još nekoliko kvantifikatora o kojima biste željeli znati

Ok, dakle još uvijek ima još kvantifikatora! Ovih nekoliko zadnjih kvantifikatora namijenjeni su kada želite odrediti duljinu niza, a da ne budete previše određeni.

Na primjer, recimo da želite pronaći niz bilo koje duljine s kojim se može podudarati regularni izraz. Kao ime! Imena (u zapadnim zemljama) počinju jednim velikim slovom i završavaju nasumičnim brojem malih slova, nakon kojih slijedi razmak. Da biste pronašli ime, trebali biste napisati sljedeći kod:

[A-Z][a-z]*

[A-Z] specificira da prvi znak niza treba biti veliko slovo. [a-z]* navodi da ostatak niza treba biti sastavljen od malih slova, ali nije važno koliko slova slijedi. A razmak na kraju znači da će završiti utakmicu nakon što pronađe razmak na kraju malih slova.

Zlatna kombinacija u regularnom izrazu je .*. To znači beskonačno podudaranje s bilo kojim znakom. Drugim riječima, odgovarat će cijelom tekstu kao jednoj stavci.

Sljedeći kvantifikator koji trebate znati je +. Ovaj je baš kao * osim što neće odgovarati nizu s nula znakova. * će odgovarati bilo kojoj duljini niza, što uključuje nizove koji nemaju duljinu. +, s druge strane, treba niz s barem jednim znakom ili više.

Na kraju, tu je ? kvantifikator. Ovo je čudno. Određuje da je niz duljine nula znakova ili jedan znak. To je to - ili ništa ili samo jedno. Dakle, ako koristite kod [a-z]? s razmakom na početku i na kraju, tražit će pojedinačna slova unutar teksta.

Traži znakove na početku i na kraju niza teksta

Približavamo se kraju našeg vodiča o korištenju redovnog izraza s prečacima! Postoje samo još dvije vrste koda redovnog izraza koje ćete koristiti s prečacima.

Prvi su znakovi koji vam omogućuju usklađivanje nizova na temelju načina na koji počinju i/ili završavaju.

Kada nije u zagradama, ^ uloga lika mijenja se iz značenja "isključiti" u "počinje s". Određuje da niz treba započeti s onim što želite. Na primjer, ako pišete ^A, koji bi odgovarao slovu "A" u nizovima "U redu", "Apple" i "A".

Ipak, ne odgovara cijeloj riječi. Za to biste ga trebali promijeniti u ^A[A-Za-z]*. To će odgovarati prvoj riječi odlomka/niza, sve dok ta riječ počinje velikim "A".

Kao napomenu, možete napisati [A-Za-z] kao [A-z]. To znači isto, samo smatram da je prvo malo jasnije kada učite.

Da biste odredili kraj niza, htjet ćete upotrijebiti $ lik. Djeluje isto kao i ^ lik. Jedina razlika je što to pišete na kraju zagrade/niza, a ne na početku.

Na primjer, ako želite pronaći nizove/odlomke koji završavaju s "le", upotrijebili biste kod [A-z]*le$. To će odgovarati "Table", "apple" i "capable" sve dok su na kraju niza ili paragrafa.

Regex će čak odbiti ovo podudaranje ako na kraju niza postoji razmak ili interpunkcijski znak. "Stol." neće se podudarati s ovim kodom.

Da biste to popravili, možete uzeti u obzir interpunkciju. Ovaj kod uzima u obzir različite oblike interpunkcije i razmaka koji se mogu pojaviti na kraju niza, uključujući interpunkcijski znak nakon kojeg slijedi razmak:

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

Taj će kod odgovarati “Moguće”, “tablica.”, “stabilno” i “sposobno? “.

Spremite tekstualne nizove pomoću funkcije grupiranja redovnog izraza s prečacima

u redu! Došli ste do kraja našeg vodiča za AppleToolBox o korištenju redovnog izraza s prečacima. Ostala je još samo jedna funkcija regularnog izraza za naučiti, a to je grupiranje.

Grupiranje je vjerojatno najvažnija značajka redovnog izraza jer vam omogućuje da radite stvari s kodom regularnog izraza koji napišete. Bez toga, regex je samo značajka pretraživanja. Može vam reći samo postoji li niz unutar većeg tijela teksta, tj. vratit će "true" ili "false".

Međutim, pomoću grupiranja možete pohraniti rezultate svog redovnog izraza. A to znači da možete kopirati podudaranja, pohraniti ih u varijable, zamijeniti ih drugim tekstom, izmijeniti njihovo oblikovanje i sve ostalo što biste željeli učiniti s regularnim izrazom.

Na sreću, grupiranje je super jednostavno! Samo stavite sve što želite grupirati u zagrade (). Što god stavite u zagrade, tretirat će se kao grupa.

Ako stavite cijeli redak koda redovnog izraza unutar zagrada, npr (.*@.*\..{3}), tada će ta grupa biti zapamćena po vašem kodu, što će omogućiti da se kasnije ponovo pozove.

Važno je da grupe koristite samo kad god je potrebno. Budući da su pohranjeni u memoriji, mogu uzrokovati smanjenje performansi vašeg koda. Sačuvajte grupe kada su potrebne!

Grupe možete koristiti i za organizaciju

Također možete koristiti grupe za organiziranje vašeg redovnog izraza koda pomoću prečaca. Kada to učinite, grupa unutar zagrada neće se nužno zapamtiti.

Na primjer, recite da želim uskladiti riječ "Halo", osim što me nije briga koje je zadnje slovo. To može biti bilo koje malo ili veliko slovo ili čak broj. “Hell3838djdjajaksks” i “Hello” treba računati kao podudaranja. “Pakao”, s druge strane, ne treba računati.

Da bi ovo funkcioniralo, pišem kod Pakao[A-z]|[0-9]+. Ali ovo je rezultat koji dobijem:

Razlog zašto ne odgovara onome što sam očekivao je taj + primjenjuje se samo na [0-9] zagrada. Treba mi da se odnosi na obje zagrade.

Osim toga, ovaj kod govori da želim bilo koje pakao[A-z]ili[0-9]. Dakle, podudara se za riječi koje počinju s "Pakao" i završavaju slovom, ili traži bilo koji niz brojeva. Ono što mi zapravo treba je da se podudara s primjerima riječi "Pakao" koji završavaju slovom ili brojem.

Da to popravim, mogu koristiti grupu i prepisati kod kao Pakao([A-z]|[0-9])+. Sada traži riječ "Pakao" iza koje slijedi bilo koje slovo ili broj. I zato što je + se primjenjuje na obje zagrade, može biti bilo koja kombinacija slova i brojeva, sve dok postoji barem jedno slovo ili broj.

Kao što možete vidjeti na snimci zaslona ispod, ova grupa rješava moj problem bez nužnog pohranjivanja informacija unutar te grupe:

Što sad?

I to je to! To je gotovo sve što biste ikada željeli znati o korištenju redovnog izraza s prečacima. Nadajmo se da se osjećate dovoljno samopouzdano da sada počnete eksperimentirati s regexom, čak i ako vam isprva to nije imalo smisla.

Sada kada znate osnove redovnog izraza, spremni ste ga početi koristiti u svojim prečacima! Prečaci prihvaćaju unos regularnog izraza u sljedećim radnjama:

  • Tekst podudaranja
  • Zamijeni tekst

Koristeći ove dvije akcije prečaca, možete umetnuti regex u svoje prečace.

Uparite ovo s mogućnostima automatizacije Prečaca i imate na raspolaganju prilično moćan alat.

Možete koristiti regex da biste olakšali oblikovanje teksta u prečacima, da biste izvukli informacije iz e-pošte, tekstova, web-mjesta, datoteke i kalendarske događaje, stvoriti tekst koji slijedi određeni format, provjeriti je li unos ispravno unesen i više.

Na primjer, recimo da želite podudaranje za e-poštu. Možda trebate provjeriti je li niz teksta poruka e-pošte ili možda želite izvući e-poštu(e) iz tijela teksta.

Kako biste ovo raščlanili?

Pa, znate da će osnovna struktura e-pošte biti neka kombinacija slova, brojeva i znakova, nakon čega slijedi simbol "@", a zatim slijedi naziv web-mjesta kao što je Gmail ili iCloud, a zatim slijedi ".com", ".org" ili neka druga vrsta troznakova najviše razine domena.

Da biste to napisali u regularnom izrazu, morate navesti da želite niz od najmanje jednog znaka koji odmah slijedi simbolom "@", zatim još jednim nizom od najmanje jednog znaka, nakon čega slijedi ".", a zatim nizom od tri likovima. To bi izgledalo ovako:

[e-mail zaštićen]+\..{3}

Ako ovo zalijepite u Tekst podudaranja ili Zamijeni tekst radnje u Prečacima, imat ćete automatizaciju koja može pronaći, pohraniti i manipulirati adresom e-pošte.

Možete koristiti ovu vrstu rješavanja problema da smislite vlastita rješenja za regex ili da pronađete neka koja su drugi napravili online!

Počnite koristiti regularni izraz s prečacima kako biste svoju automatizaciju podigli na sljedeću razinu

I to je, prijatelji, stvarno to. Nadam se da ste uživali u praćenju ovog članka! Ovo je jedan od najambicioznijih komada koje sam ikada napisao za AppleToolBox. Morao sam sam naučiti regex da ga napišem, i nadam se da sam vam na taj način uspio pomoći da ga naučite.

Korištenje redovnog izraza s prečacima ne razlikuje se od učenja kako raditi bilo što drugo na pametnom telefonu ili računalu. Samo uložite malo vremena i strpljenja i na kraju ćete stići.

Za više vodiča, tutorijala i vijesti o svemu što se tiče Applea, pogledajte ostatak blogu AppleToolBox.

u redu [A-Z][a-z]+, vidimo se sljedeći put!