V zadnjem mesecu ali tako sem pokrival aplikacije Shortcuts in Automator v iOS oziroma macOS. Obe sta močni, ko gre za avtomatizacijo v Apple ekosistemu, in začenši z macOS Monterey to jesen, bodo bližnjice postale aplikacija za avtomatizacijo na vseh napravah Apple. Zato sem ta članek želel porabiti za razpravo o zelo močni temi: Uporaba rednega izraza z aplikacijo Bližnjice.
Čeprav imam nekaj izkušenj iz računalništva in programiranja, nekako nikoli nisem naletel na regex. Morda me je ime prestrašilo ali pa je bila to koda, ki je ena izmed najmanj berljivih kod, kar sem jih kdaj videl.
Ne glede na to sem se odločil, da bom podrobneje preučil regex, potem ko sem v zadnjih nekaj mesecih obravnaval aplikacijo Bližnjice. In odkril sem, da je veliko omejitev, na katere sem naletel pri bližnjicah, pa tudi pri Automatorju, mogoče premagati z rednim izrazom.
Z drugimi besedami, ni šlo za to, da tem aplikacijam manjkajo funkcije, ampak da sem imel pomanjkanje izobrazbe.
V današnji objavi se bova ti in jaz skupaj naučila vsega skupaj. Tako lahko kar najbolje izkoristite vsako od teh aplikacij.
Pokrivali bomo osnove rednega izraza (začenši s tem, kaj je), kaj lahko storite z njim v aplikaciji Bližnjice, nekaterih spletnih mestih in vire, ki jih lahko uporabite, če se sami ne želite učiti regeksa, nato pa se bomo poglobili v osnovne koncepte in mehaniko rednega izraza jezik.
V redu, začnimo!
Vsebina
-
Kaj so regularni izrazi (tj. regex)?
- Stvari, ki jih lahko naredite z regexom
- Kako lahko uporabite regex z aplikacijo Bližnjice?
- Uporabite regex101.com, da preizkusite svoje regularne izraze
- Če se ne želite naučiti uporabljati regex z aplikacijo Bližnjice, preberite to
-
Regex za začetnike: Začnite uporabljati regex z bližnjicami
- Kaj so okusi regex?
- Spletna mesta in reference, ki vam bodo v pomoč pri učenju rednih izrazov z bližnjicami
- Kako izvesti osnovno iskanje po besedilu z uporabo rednega izraza z bližnjicami
- Dodajanje spremenljivih komponent v vaša iskanja po rednih izrazih
- Razponi lahko razširijo vaše iskanje
- Kako z bližnjicami izključiti besede in znake iz iskanja rednih izrazov
- Nadomestni znaki vam lahko ponudijo več možnosti iskanja
- Uporabite kvantifikatorje, da določite dolžino besedila, ki ga iščete
- Obstaja še nekaj kvantifikatorjev, o katerih bi želeli vedeti
- Poiščite znake na začetku in koncu niza besedila
- Shranite besedilne nize z uporabo funkcije združevanja rednega izraza z bližnjicami
-
Kaj pa zdaj?
- Kako bi to razčlenili?
-
Začnite uporabljati regex z bližnjicami, da svojo avtomatizacijo dvignete na naslednjo raven
- Povezane objave:
Kaj so regularni izrazi (tj. regex)?
Regularni izraz ali "regex" je del kode, ki ga lahko uporabite za iskanje dela besedila znotraj večjega dela besedila.
Če ne veste, se del besedila znotraj drugega dela besedila v programiranju imenuje "niz". Na primer, beseda "zelena" je niz znakov iz besedila "Danes sem nosil zelene hlače."
Povedano drugače, regex je način za iskanje niza besedila v večjem delu besedila. In ker je regex napisan v kodi, ga lahko uporabite za izvajanje nekaterih precej zapletenih operacij.
Na primer, če želite poiskati besedo »e-pošta«, lahko preprosto napišete kodo rednega izraza, ki išče e-pošto.
Če pa želite najti e-poštno sporočilo, ki je znotraj odstavka, in ne veste natančno, kaj je to e-poštno sporočilo, boste morali poiskati niz besedila, ki je oblikovan kot e-poštno sporočilo. tj. niz, ki sledi "[email protected]” format.
Zdaj pa recimo, da ne želite samo najti enega e-poštnega sporočila iz odstavka, ampak vsak E-naslov. Morda jih želite hitro kopirati kam drugam, posodobiti v novo obliko ali jih zamenjati tako, da bodo vsi rekli »[email protected]“.
Ko boste vedno bolj vešči in izkušeni z rednim izrazom, boste lahko počeli vse te stvari in še več.
Stvari, ki jih lahko naredite z regexom
V redu, morda primeri z e-pošto, ki sem jih pravkar dal, niso tako praktični. Ne skrbite – to je daleč od meje tega, kar lahko dosežete z uporabo rednega izraza z aplikacijo Bližnjice.
Na splošno vse, kar lahko naredi regex, spada v eno od teh štirih kategorij:
- Poiščite niz besedila v večjem delu besedila (tj. iščete besedo/niz/vrsto niza na strani z besedilom).
- Potrdite, da se niz besedila ujema z vašo želeno obliko (tj. preverite, ali je niz besedila napisan z velikimi črkami/pravilno urejen/ločil).
- Zamenjajte ali vstavite besedilo v določeno območje dela besedila.
- Razdelite niz besedila na določenih mestih (npr. razdelite kos besedila vsakič, ko je vejica).
Raven globine, ki jo lahko uporabite za interakcijo z vsako od teh vrst funkcij, in način, kako jih lahko kombinirate, naredijo regex neverjetno zmogljivo orodje za razčlenjevanje in manipulacijo besedila.
Kako lahko uporabite regex z aplikacijo Bližnjice?
V redu, zdaj upajmo, da imate osnovno predstavo o tem, za kaj se uporablja regex. To je vrsta kode, ki jo lahko uporabite za iskanje besedila, tudi če ne veste natančno, kaj je to besedilo.
Torej, kako vam to pomaga pri bližnjicah? Podobno kot dodajanje skriptov vašim bližnjicam, je to način, da se premaknete od osnovne avtomatizacije (Pošlji mi sporočilo, ko se odprejo vhodna vrata) na bolj napredne možnosti (Samodejno ustvari koledarski dogodek za moja srečanja vsakič, ko iz službe prejmem e-poštno sporočilo za sestanek Zoom).
Če želite preveriti, ali je vnos pravilen, lahko uporabite redni izraz z bližnjicami. Če na primer ustvarite bližnjico, ki deluje samo z URL-ji, lahko uporabite regex na začetku bližnjice, da zagotovite, da uporabnik izvaja avtomatizacijo na URL-ju.
Redni izraz lahko kombinirate s skriptnim ustvarjanjem, da ustvarite močne bližnjice. na primer to bližnjico uporablja regex in skripte za spreminjanje črtne kode v URL za vašo najljubšo trgovino.
Ko uporabljate aplikacijo Bližnjice na Macu (prihaja jesen 2021), lahko uporabite regex za izvajanje paketnih dejanj na kosu besedila. Vsa e-poštna sporočila v izbranem besedilu lahko na primer kopirate kot urejen seznam. Lahko pa zamenjate vsa imena v dokumentu z znaki »*«, da zagotovite zasebnost.
Lahko celo kopirate telo besedila iz ene aplikacije, ga preoblikujete, da se ujema z nastavitvami druge aplikacije, in ga nato prilepite v to drugo aplikacijo, vse z enim samim klikom z desno tipko miške.
Z drugimi besedami, regex vam omogoča popoln nadzor nad ravnanjem z besedilom z aplikacijo Bližnjice. Sprva se to morda ne sliši zelo koristno, a zdaj, ko veste, da obstaja, boste zagotovo začeli opažati, koliko bližnjic bi lahko izboljšala ta funkcija. Opazili boste tudi, da veliko bližnjic sploh ni mogoče brez rednega izraza.
Uporabite regex101.com, da preizkusite svoje regularne izraze
Ko začnete uporabljati regex z bližnjicami, boste naleteli na točko frustracije:
Zelo težko je preizkusiti vašo kodo regularnega izraza. In to ni edinstveno za regex. Preizkušanje česar koli z aplikacijo Bližnjice je neka bolečina. Edini način za to je, da zaženete bližnjico. Ta metoda ni slaba, če samo preizkušate vgrajene funkcije bližnjic.
Toda za testiranje kode to ne omogoča preverjanja vrstice za vrstico in ne ponuja veliko povratnih informacij.
Za to priporočam uporabo regex101.com. To je spletno mesto, v katerega lahko v realnem času vnesete kodo regex. Besedilo lahko vnesete tudi v urejevalnik besedil na isti spletni strani. Ko vnašate vsakega, boste videli, ali vaš regularni izraz deluje, zakaj deluje ali ne, in dobili boste informacije o najdenih ujemanjih.
regex101.com uporablja drugačno obliko regexa kot tisti, ki ga podpirajo bližnjice (več o tem čez minuto), vendar je dovolj blizu, da ne bi smeli naleteti na preveč težav.
Uporaba tega orodja je odlična, saj lahko tja najprej napišete svoj regularni izraz, nato pa ga kopirate v aplikacijo Bližnjice, ko deluje, kot je bilo predvideno.
Če se ne želite naučiti uporabljati regex z aplikacijo Bližnjice, preberite to
Razumem – vsi se ne bodo želeli naučiti uporabljati rednega izraza z bližnjicami. To je veščina, kar pomeni, da bo zahtevala čas in prakso. Ni niti približno tako preprosto kot ostale funkcije povleci in spusti v aplikaciji Bližnjice.
Brez skrbi! Čeprav iz aplikacije Bližnjice ne boste mogli izkoristiti toliko kot nekdo, ki si vloži čas za učenje rednega izraza, so vam še vedno na voljo možnosti. Na spletu so namreč spletna mesta in strani, kjer so ljudje ustvarili seznam ugrizov kode regex, ki jih lahko kopirate in prilepite v aplikacijo Bližnjice.
Tukaj je nekaj povezav, ki jih lahko preverite, če se 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 preberite te povezave in morali bi najti običajne rešitve regex za bližnjice, ki jih želite narediti. To ne bo možnost brez izobraževanja, saj bo še vedno potrebno nekaj časa, da se naučite tega, kar gledate. Je pa veliko enostavnejša in idealna rešitev za nekoga, ki nima časa vnesti v regex.
Kljub temu moram priznati, da se rednega izraza ni preveč težko naučiti, še posebej, če imate nekaj izkušenj z lupino ali programiranjem za začetnike. Regex mi je sprva zvenel kot neumnost, toda po eni uri branja člankov in igranja z regex101.com sem lahko začel pisati regex za svoje bližnjice.
To je le stvar poznavanja – ko jo boste dovolj dolgo gledali, bo nehalo videti tako čudno. Torej, če imate čas in ste samo prestrašeni, ne bodite!
Regex za začetnike: Začnite uporabljati regex z bližnjicami
V redu, dovolj predgovora! Imeti morate predstavo o tem, kaj je regex, kaj lahko naredi, zakaj bi se ga morali naučiti in dovolj informacij, da se odločite, ali se ga želite naučiti. Zdaj se bomo poglobili v bistvo.
Spodaj je veliko vsebine, vendar ne skrbite! Ta članek bo bolj študijski vodnik. Priporočam, da preletite vsak razdelek, da boste dobili predstavo o mehaniki, ki jo uporablja regex. To bi vam moralo tudi pomagati, da se obrnete na to, če ste še vedno zmedeni glede tega, kaj je regex.
Ko ste preleteli stvari, priporočam, da odprete regex101.com in se igrate z vsakim od orodij v vsakem spodnjem razdelku. To vam bo pomagalo videti, kako koncepti izgledajo v praksi, in izboljšati vaš spomin. Ko to storite, lahko ta članek samo obravnavate kot referenčno točko – nekaj, na kar se lahko vrnete, ko pozabite na delce regeksa.
OK pojdimo!
Kaj so okusi regex?
Najprej si bomo ogledali okuse regex. Ne skrbite – to ne bo vplivalo na vašo vsakodnevno uporabo rednega izraza z bližnjicami. To je le nekaj, česar se morate zavedati, preden začnete.
Obstajajo različne različice regexa, ki so znane kot "okusi". Te različne različice so si še vedno zelo podobne. Če se lahko naučite brati in pisati enega okusa, bi morali biti sposobni brati katerega koli od njih. Obstajajo le majhne razlike v tem, kako naj bo vaša koda regularnega izraza oblikovana.
V programiranju so te značilnosti oblikovanja znane kot "sintaksa". To je samo način, kako morate napisati svojo kodo, da jo aplikacija, v kateri jo pišete, razume.
Evo zakaj je sintaksa pomembna
"Hej prijatelj, kako poteka tvoj dan?"
«, gre prijatelj? tvoj Hej dan kako"
Oba stavka imata enake besede, znake in presledke. Vendar je smiselna le ena, in to zato, ker sledi konvencionalni sintaksi.
Pri kodiranju lahko en programski jezik razume prvo različico, drugo pa ne. Za drug programski jezik pa je drugi morda popolnoma smiseln, medtem ko je prvi videti kot neumnost. Nekomu, ki zna angleško, pa verjetno lahko razumete namen obeh vrstic, čeprav se bo potrebno malo potruditi, da bi razumeli pomen.
Tako so (nekako) različni okusi regeksa. Vsi bodo videti nekoliko drugačni in malo podobni vam. Vendar morate uporabljati pravi okus za aplikacijo, ki jo uporabljate, sicer ta aplikacija ne bo imela pojma, kaj ste napisali.
Aplikacija Bližnjice razume okus regeksa ICU, tako da je to okus, ki ga boste želeli uporabiti. Spletno mesto regex101.com ima nekaj različnih okusov, med katerimi lahko izbirate na levi strani strani. Vendar pa uporablja PCRE, ki je precej podoben ICU.
Pomembno je vedeti, da obstajajo različni okusi regeksa, ker boste na spletu nedvomno naleteli na različne okuse. Če najdete malo rednega izraza, ki ga želite ukrasti, vendar ga ne morete spraviti v delo z bližnjicami ali pa preprosto ni videti prav, preverite, v kakšnem okusu je napisan!
Spletna mesta in reference, ki vam bodo v pomoč pri učenju rednih izrazov z bližnjicami
Še ena stvar, ki jo želim obravnavati, preden začnemo raziskovati dejansko mehaniko pisanja regex, so viri. Nikakor ne trdim, da je ta objava izčrpen vir o učenju rednih izrazov. Namenjen je le kot koristno izhodišče za tiste, ki želijo uporabljati regex z bližnjicami.
Če se želite poglobiti v regex ali menite, da vam ta članek ne nudi pomoči, ki jo potrebujete, si lahko ogledate nekaj teh člankov, vodnikov in orodij:
- https://regex101.com – Spletno mesto, ki vam omogoča testiranje vaše kode rednega izraza v realnem času.
- https://www.shortcutfoo.com/app/dojos/regex/cheatsheet – Varalo, ko pozabiš, kaj počne vsak lik
- http://www.rexegg.com – To spletno mesto je izčrpen vir za učenje vsega, kar morate vedeti o rednem izrazu. Oglejte si to, če želite postati vešči regex.
- https://scottwillsey.com/blog/ios/regex1/ – To je štiridelna serija blogov o uporabi rednega izraza z bližnjicami. Uporabljam zelo drugačen pristop od tega priročnika, zato bi morala biti lepa spremljevalna serija tega članka.
- Stack Overflow in Reddit sta dobri spletni strani za izmenjavo vprašanj o pravilnih izrazih in napredek za nasvete in odgovore.
Ti viri se razlikujejo od tistih, ki so navedeni v Če se ne želite naučiti uporabljati regex z aplikacijo Bližnjice razdelka, saj bodo vsi zahtevali, da se dejansko začnete učiti regex. So bolj izčrpni, drugi pa so le referenčne točke.
Kako izvesti osnovno iskanje po besedilu z uporabo rednega izraza z bližnjicami
Vredu! Zdaj smo prišli do točke, na katero so vsi čakali: naučili se bomo osnov uporabe rednega izraza z bližnjicami.
Začnimo z osnovnim iskanjem, saj je to najpreprostejša stvar, ki jo lahko naredite z rednim izrazom. Kot že omenjeno, priporočam, da se regex101.com odpre na drugem zavihku, da boste lahko sledili.
V najosnovnejši obliki bo regex iskal (oz tekmo) karkoli vnesete vanj. Na primer, če bi tipkal Vredu
kot moja koda rednega izraza bi v tem priročniku našel vsak primer besede »V redu«.
Velike in male črke, presledki in ločila so pomembni. To pomeni to Vredu
, vredu
, Vredu!
, in Vredu ,
bodo vsi prinesli različne rezultate.
In to je to! Kadar koli vnesete nekaj v iskanje po pravilnem izrazu brez uporabe posebnih znakov, se bo regex ujemal z vsem, kar se natančno ujema s tem, kar ste vnesli.
Obstaja en ulov! Nekateri znaki na tipkovnici so tudi posebni znaki regularnega izraza. To pomeni, da opravljajo nekakšno funkcijo v kodi regex.
The ?
simbol je en tak znak. Uporablja se v kodi regex kot kvantifikator. Torej, če poskusite iskati "V redu?" s tipkanjem Vredu?
kot vaša koda rednega izraza ne boste dobili tistega, kar želite.
Če želite to popraviti, morate določiti, da želite uporabiti »?« kot niz, ne kot poseben znak. Če želite to narediti za ta ali kateri koli drug znak, samo dodajte a \
simbol tik pred znakom, katerega posebne lastnosti želite izničiti.
Torej, če želite iskati "V redu?" z rednim izrazom bo vaša koda videti takole:
Vredu\?
Če niste prepričani, ali se določen znak z rednim izrazom obravnava kot poseben znak, lahko preverite ta goljufija za vse posebne znake v rednem izrazu.
Iščite več kot eno besedo z znakom »ali«.
Druga pomembna komponenta iskanja nizov z rednim izrazom je uporaba funkcije »ali«. To je znak, ki ga lahko postavite med dve besedi/znakom in rečete: »Ujemaj to ali to«.
Na primer, če želim v besedilu iskati besedi "v redu" in "V redu", bi uporabil |
značaj. Takole:
V redu|v redu
Če težko najdete |
znak, držite premik pritisnite in pritisnite \
ključ. Je nad vrnitev tipko na večini tipkovnic.
Dodajanje spremenljivih komponent v vaša iskanja po rednih izrazih
V redu, zdaj, ko veste, kakšen je nevtralen regularni izraz, je čas, da izberete svoj prvi posebni znak. To bi bili oglati oklepaji, ki so te stvari []
.
Karkoli vnesete v te oklepaje, se bo štelo za spremenljivo komponento vašega iskanja po rednih izrazih. V oklepaje lahko vstavite poljubno število znakov, vendar bo na ujemanje veljaven le eden.
V redu, to se sliši nekoliko zapleteno, vendar ni! Evo, kako to izgleda v praksi:
-
[Vredu
se bo ujemalo samo z besedo "V redu". Nekako nesmiselno. -
[AB] v redu
bo ustrezal tako »V redu« kot »Blright«. -
V redu
bo ustrezal »V redu«, »Alroght«, »Alrught«, »Alrxght« itd.
Lahko kombinirate znake znotraj oklepajev in uporabite več oklepajev v isti vrstici regularnega izraza. [AB]r[i1]gh[tuvwxyz]
je veljaven del regularnega izraza. Upajmo pa, da ne bo videti tako kaotično, kot bi morda bilo pred nekaj minutami!
Razponi lahko razširijo vaše iskanje
Naslednji del rednega izraza, ki bo uporaben pri bližnjicah, je obseg. Razponi vam omogočajo, da določite obseg znakov, ki jih boste sprejeli.
V prejšnjem razdelku ste morda opazili, da so moji oklepaji vključevali veliko zaporednih črk. Najdaljša je bila [tuvwxyz]
. Te črke se v abecedi pojavljajo v istem vrstnem redu, tik ena poleg druge.
To pomeni, da bi lahko uporabil obseg, namesto da bi jih vtipkal. To bi izgledalo takole:
v redu[t-z]
Ta del kode rednega izraza bo naredil isto stvar kot v redu [tuvwxyz]
. Enostavno je lepše in lažje pisati.
Ta isti obseg lahko zamenjate z [a-z]
če želite, da sprejme katero koli malo črko iz abecede. Lahko pa uporabite [0-9]
če želite sprejeti katero koli enomestno številko.
V istem oklepaju lahko kombinirate tudi obsege. Na primer ta V redu [i-ux-z].
bo sprejela »V redu«, »Alroght«, »Alrxght« in »Alryght«, vendar ne bo sprejela »V redu« ali »Alrvght«.
Mimogrede, obstajajo druge različice besede »V redu«, ki jih bo ta koda sprejela, in še veliko več, ki jih ne bo. To je le kratek izbor, da stvari ostanejo, no, kratke.
Če težko razumete, kaj [i-ux-z]
pomeni, bi morda pomagalo videti, da je napisano takole:
[i-u, x-z]
To ni pravilna sintaksa rednega izraza – ne smete uporabljati vejice za ločevanje obsegov. Ampak upajmo, da bo to pomagalo, da bo bolj smiselno!
Za ločevanje obsegov ne potrebujete vejice v regularnem izrazu in ni vam treba postaviti obsegov drug poleg drugega. Lahko bi ga spremenili v [i-uabcx-z]
. To bi sprejelo enake razpone kot prej plus znake "a", "b" in "c".
Kako z bližnjicami izključiti besede in znake iz iskanja rednih izrazov
Ok, zdaj smo nekam prišli! Če ste do te točke spremljali ta članek, bi si morali ogledati spodnjo kodo in razumeti, čemu se ujema:
Ap[p-r]le[Tt]ool[BbLF]ox
Če ga lahko preberete, potem veste, da del kode regex vključuje veliko možnih različic besede "AppleToolBox". Kaj pa, če bi želeli zmanjšati število različic, ki jih sprejema, ne da bi spremenili naš obseg?
Tu nastopi lik "ne". Izgleda takole: ^
. Če ga težko najdete na tipkovnici (kot sem jaz), počakajte premik in pritisnite na 6 tipko na tipkovnici.
Za uporabo ^
znak, ga postavite na začetek znaka, ki ga želite izključiti.
Obstaja ulov! The ^
znak ne deluje zunaj funkcije regularnega izraza. Ne morete ga postaviti samo pred črko "A", da izključite to črko iz iskanja. Koda rednega izraza ^A
bo poiskal samo veliko "A".
Namesto tega ga združite z oklepaji in drugimi posebnimi znaki regularnega izraza.
Na primer, če bi želel poiskati kateri koli primer besede »V redu«, ki se ne začne s črko »A«, bi uporabil kodo [^A] V redu
.
Lahko ga celo kombinirate z razponi! Samo postavite ga na začetek svojega oklepaja in vse v tem oklepaju, vključno z obsegi, bo izključeno iz vašega iskanja. Takole:
Kaj pa, če želite izključiti določeno besedo iz iskanja?
Te informacije sem težko našel. Uporabnik Stack Overflow je imel rešitev in izgleda takole:
^(?!(beseda)$).+$
Samo zamenjaj beseda
s katero koli besedo, ki jo želite izključiti iz iskanja. Takole:
Lahko preberete to objavo Stack Overflow tukaj če želite izvedeti več o tem posebnem primeru uporabe.
Nadomestni znaki vam lahko ponudijo več možnosti iskanja
To nas pripelje do nadomestnih znakov. Nadomestni znak, ki je pika .
, se uporablja za predstavitev katerega koli posameznega znaka, brez nobenega. Če samo tipkaš .
kot vaša koda rednega izraza z bližnjicami bo vrnil vsak posamezen znak v telesu besedila kot posamezno ujemanje.
Seveda ne priporočam uporabe v ta namen! Namesto tega priporočam uporabo namesto enega samega znaka v besedi. na primer v redu
bo ustrezal »V redu«, »Alrxght«, »Alr
In to je precej to! Nadomestni znak je precej enostavno razumeti. Se ujema z vsem! Zaradi tega je v pomoč pri iskanju nizov, ki se ujemajo z določeno obliko, hkrati pa imajo edinstvene znake.
E-poštna sporočila, na primer, bodo videti precej podobna, ne da bi bila enaka. Nadomestni znak vam lahko pomaga združiti elemente, za katere veste, da bodo tam (na primer ».com« in »@«) z znaki, ki jih ne poznate (na primer »my_email567«, iCloud ali »Gmail«).
Še en zanimiv primer uporabe je uporaba .
znak za iskanje nizov določene dolžine.
Na primer, če želim najti vsak štirimestni niz v besedilu, bi lahko uporabil ...
s prostorom na obeh straneh.
In tukaj so vsi nizi s sedmimi znaki v istem besedilu:
Upoštevajte, da to ni popolna metoda za iskanje nizov določene dolžine. Kot lahko vidite v zgornjih primerih, se nekateri nizi ujemajo, ki ne bi smeli biti, in nekateri, ki bi morali biti prezrti. Zanimivo je, da se spomnite, da lahko uporabite .
znak za štetje znakov.
Prav tako ne pozabite, da .
je poseben znak v rednem izrazu. To pomeni, da boste morali dodati a \
pred njim, če želite iskati pike. To pomeni, da bi morali uporabiti Vredu\.
da se ujema z »V redu«.
Uporabite kvantifikatorje, da določite dolžino besedila, ki ga iščete
V redu, torej lahko tehnično uporabite .
znak, da poiščete niz, ki zavzema določeno število znakov. Večino časa pa boste želeli biti bolj natančni.
Tu pridejo kvantifikatorji. Kvantifikatorji vam omogočajo, da določite dolžino niza, ki ga iščete pri uporabi rednega izraza z bližnjicami.
Recimo, da želite najti katero koli besedo, ki ima točno tri črke. Če želite to določiti, boste želeli uporabiti te oklepaje:
{}
Ko postavite te oklepaje za temi []
oklepajih, določite, da želite niz, ki se ujema s številom znakov v tem {}
in obseg znakov, določen v tem []
.
Prepričan sem, da to zdaj nima veliko smisla, zato si oglejmo primer!
Recimo, da želite najti katero koli leto, omenjeno v besedilu. Ker je leto sestavljeno iz štirih številk (očitno ne vsako leto od vseh časov, samo sledite mi tukaj), lahko uporabite to kodo za ujemanje let v tem besedilu:
[0-9]{4}
Ta koda pravi, da želimo niz, sestavljen iz znakov od 0 do 9, ki je posebej dolg štiri znake. Kako najde ta določen niz, si lahko ogledate na naslednjem posnetku zaslona:
Opozoriti moram, da je s to kodo rednega izraza nekaj težav, in sicer da ne upošteva presledkov ali ločil. Če torej koda najde številko, daljšo od štirih znakov, na primer »12345678«, bo našla niz »1234« in niz »5678«.
Če želite odpraviti to težavo, bi želeli dodati presledek na začetek kode in oklepaj za {4}
ki vsebuje še en presledek, piko, vprašaj, vejico in klicaj. Tako bo spregledal dolge nize številk, ne da bi manjkal nize številk, ki imajo na koncu ločila namesto presledka.
Morda boste želeli uporabiti tudi kvantifikatorje za določitev več kot ene dolžine niza. Na primer, morda želim najti niz štirih znakov, pa tudi sedem in enajst. Evo, kako bi to izgledalo:
[a-z]{4,7,11}
Obstaja še nekaj kvantifikatorjev, o katerih bi želeli vedeti
Ok, torej je še vedno več kvantifikatorjev! Teh zadnjih nekaj kvantifikatorjev je za tiste, ko želite določiti dolžino niza, ne da bi bili preveč specifični.
Recimo, da želite najti niz poljubne dolžine, s katerim se lahko ujema regex. Kot ime! Imena (v zahodnih državah) se začnejo z eno veliko črko in končajo z naključnim številom malih črk, ki jim sledi presledek. Če želite poiskati ime, bi napisali naslednjo kodo:
[A-Z][a-z]*
[A-Ž]
določa, da mora biti prvi znak niza velika črka. [a-z]*
določa, da mora biti preostali del niza sestavljen iz malih črk, vendar ni pomembno, koliko črk sledi. In presledek na koncu pomeni, da bo končal tekmo, ko bo našel presledek na koncu malih črk.
Zlata kombinacija v regularnem izrazu je .*
. To pomeni neskončno ujemanje s katerim koli znakom. Z drugimi besedami, ujemal se bo s celotnim besedilom kot en element.
Naslednji kvantifikator, ki ga morate vedeti, je +
. Ta je tako kot *
razen da se ne bo ujemal z nizom z nič znaki. *
bo ustrezal poljubni dolžini niza, kar vključuje nize, ki nimajo dolžine. +
, po drugi strani pa potrebuje niz z vsaj enim znakom ali več.
Nazadnje je tu ?
kvantifikator. To je nenavadno. Določa, da je niz dolžine nič znakov ali en znak. To je to - ali nič ali samo eno. Torej, če uporabite kodo [a-z]?
s presledkom na začetku in koncu bo iskal posamezne črke v besedilu.
Poiščite znake na začetku in koncu niza besedila
Bližamo se koncu našega vodnika o uporabi rednega izraza z bližnjicami! Obstajata samo še dve vrsti kode rednega izraza, ki ju boste uporabili z bližnjicami.
Prvi so znaki, ki vam omogočajo ujemanje nizov glede na to, kako se začnejo in/ali končajo.
Ko ni v oklepajih, ^
vloga lika se spremeni iz pomena »izključi« v »začne se z«. Določa, da se mora niz začeti s tem, kar želite. Na primer, če pišete ^A
, ki bi se ujemala s črko "A" v nizih "V redu", "Apple" in "A".
Vendar se ne ujema s celotno besedo. Za to bi ga morali spremeniti v ^A[A-Za-z]*
. To se bo ujemalo s prvo besedo odstavka/niza, če se ta beseda začne z veliko "A".
Kot opombo lahko napišete [A-Za-z]
kot [A-z]
. Pomeni isto stvar, samo menim, da je prva nekoliko bolj jasna, ko se učiš.
Če želite določiti konec niza, boste želeli uporabiti $
značaj. Deluje enako kot ^
značaj. Edina razlika je, da ga pišete na koncu oklepaja/niza in ne na začetku.
Če bi na primer želeli poiskati nize/odstavke, ki se končajo z "le", bi uporabili kodo [A-z]*le$
. To se bo ujemalo z besedami »Tabela«, »jabolko« in »sposobno«, dokler so na koncu niza ali odstavka.
Regex bo celo zavrnil to ujemanje, če je na koncu niza presledek ali ločilo. "Miza." ta koda ne bo ustrezala.
Če želite to popraviti, lahko upoštevate ločila. Ta koda upošteva različne oblike ločil in presledkov, ki se lahko pojavijo na koncu niza, vključno z ločilom, ki mu sledi presledek:
[A-z]*(le[\.\?!, ]?[ ]?)$
Ta koda se bo ujemala z “Able”, “table.”, “stable” in “capable? “.
Shranite besedilne nize z uporabo funkcije združevanja rednega izraza z bližnjicami
Vredu! Prišli ste do konca našega vodnika AppleToolBox o uporabi rednega izraza z bližnjicami. Ostala je le še ena funkcija regularnega izraza, ki se jo je treba naučiti, in to je združevanje.
Združevanje je verjetno najpomembnejša značilnost regularnega izraza, saj vam omogoča, da delate stvari s kodo regularnega izraza, ki jo napišete. Brez tega je regex le funkcija iskanja. Pove vam lahko samo, ali niz obstaja v večjem delu besedila, to pomeni, da bo vrnil »true« ali »false«.
Z združevanjem pa lahko shranite rezultate svoje kode rednega izraza. In to pomeni, da lahko kopirate ujemanja, jih shranite v spremenljivke, jih zamenjate z drugim besedilom, spremenite njihovo oblikovanje in vse ostalo, kar bi želeli narediti z rednim izrazom.
Na srečo je združevanje v skupine zelo enostavno! Karkoli želite združiti, preprosto vstavite v oklepaje ()
. Karkoli vpišete v oklepaje, bo obravnavano kot skupina.
Če v oklepaje vstavite celotno vrstico kode rednega izraza, npr (.*@.*\..{3})
, potem si bo ta skupina zapomnila vaša koda, kar bo omogočilo, da jo pozneje prikliče.
Pomembno je, da skupine uporabljate samo, kadar je to potrebno. Ker so shranjeni v pomnilniku, lahko povzročijo zmanjšanje zmogljivosti vaše kode. Shranite skupine, ko jih potrebujete!
Skupine lahko uporabite tudi za organizacijo
Skupine lahko uporabite tudi za organizacijo svoje kode rednega izraza z bližnjicami. Ko to storite, se skupina v oklepajih ne bo nujno zapomnila.
Recimo na primer, da želim ujemati besedo »Pozdravljeni«, le da mi je vseeno, katera je zadnja črka. Lahko je katera koli mala ali velika črka ali celo številka. “Hell3838djdjajaksks” in “Hello” je treba šteti kot ujemanja. Po drugi strani pa "pekla" ne bi smeli šteti.
Da bi to delovalo, napišem kodo Pekel[A-z]|[0-9]+
. Ampak to je rezultat, ki ga dobim:
Razlog, da se ne ujema tako, kot sem pričakoval, je ta +
se uporablja samo za [0-9]
nosilec. Potrebujem, da se nanaša na oba oklepaja.
Poleg tega ta koda pravi, da želim bodisi pekel [A-z]
oz[0-9]
. Torej se ujema za besede, ki se začnejo s "pekel" in končajo s črko, ali pa išče poljubne nize številk. Pravzaprav potrebujem, da se ujema z primeri besede "Pekel", ki se končajo s črko ali številko.
Če želite to popraviti, lahko uporabim skupino in prepišem kodo kot Pekel([A-z]|[0-9])+
. Zdaj išče besedo "pekel", ki ji sledi katera koli črka ali številka. In ker +
se uporablja za oba oklepaja, je lahko katera koli kombinacija črk in številk, če je prisotna vsaj ena črka ali številka.
Kot lahko vidite na spodnjem posnetku zaslona, ta skupina rešuje mojo težavo, ne da bi nujno shranila podatke v to skupino:
Kaj pa zdaj?
In to je to! To je skoraj vse, kar bi lahko kdaj želeli vedeti o uporabi rednega izraza z bližnjicami. Upajmo, da se počutite dovolj samozavestni, da zdaj začnete eksperimentirati z regexom, čeprav vam sprva ni bilo smiselno.
Zdaj, ko poznate osnove rednega izraza, ste pripravljeni, da ga začnete uporabljati v svojih bližnjicah! Bližnjice sprejemajo vnos regularnega izraza v naslednjih dejanjih:
- Besedilo ujemanja
- Zamenjaj besedilo
Z uporabo teh dveh dejanj bližnjic lahko vstavite regex v svoje bližnjice.
Združite to z zmožnostmi avtomatizacije bližnjic in na voljo imate precej zmogljivo orodje.
Uporabite lahko regex za lažje oblikovanje besedila v bližnjicah, za pridobivanje informacij iz e-pošte, besedil, spletnih mest, datotek in koledarskih dogodkov, ustvarite besedilo, ki sledi določeni obliki, preverite, ali je bil vnos pravilno vnešen, in več.
Recimo, da se želite ujemati za e-poštna sporočila. Morda morate preveriti, ali je niz besedila e-poštno sporočilo, ali pa želite e-pošto potegniti iz besedila.
Kako bi to razčlenili?
No, veste, da bo osnovna struktura e-pošte neka kombinacija črk, številk in znakov, ki ji sledi simbol "@", nato sledi ime spletnega mesta, kot sta Gmail ali iCloud, ki mu nato sledi ».com«, ».org« ali kakšna druga vrsta trimestne najvišje ravni domena.
Če želite to napisati v rednem izrazu, morate določiti, da želite niz, dolg vsaj en znak, ki mu takoj sledi s simbolom "@", nato še en niz z vsaj enim znakom, ki mu sledi ".", nato pa niz treh znakov. To bi izgledalo takole:
[email protected]+\..{3}
Če to prilepite v Besedilo ujemanja oz Zamenjaj besedilo dejanja v bližnjicah, boste imeli avtomatizacijo, ki lahko poišče, shrani in manipulira z e-poštnim naslovom.
Tovrstno reševanje problemov lahko uporabite za pripravo lastnih rešitev regex ali za iskanje nekaterih, ki so jih drugi naredili na spletu!
Začnite uporabljati regex z bližnjicami, da svojo avtomatizacijo dvignete na naslednjo raven
In to je, prijatelji, res to. Upam, da ste uživali v spremljanju tega članka! To je eden bolj ambicioznih del, ki sem jih kdaj napisal za AppleToolBox. Rednega izraza sem se moral naučiti, da ga napišem, in upam, da sem vam s tem lahko pomagal pri učenju.
Uporaba rednega izraza z bližnjicami se ne razlikuje od učenja, kako narediti karkoli drugega na pametnem telefonu ali računalniku. Samo vložite nekaj časa in potrpljenja in sčasoma boste prišli tja.
Za več vodnikov, vadnic in novic o vsem, kar je Apple, si oglejte ostalo blog AppleToolBox.
Vredu [A-Z][a-z]+
, se vidimo naslednjič!