Umbes viimase kuu jooksul olen käsitlenud iOS-i ja macOS-i rakendusi otseteed ja automatiseerija. Mõlemad on Apple'i ökosüsteemi automatiseerimise jõujaamad ja alates sel sügisel macOS Montereyst on otseteed kõigi Apple'i seadmete automatiseerimise rakendus. Seetõttu tahtsin veeta selle artikli, et arutada väga võimsat teemat: regexi kasutamine rakendusega Otseteed.
Kuigi mul on arvutiteaduse ja programmeerimise taust, ei olnud ma millegipärast kunagi regexiga kokku puutunud. Võib-olla hirmutas see nimi mind ära või oli see kood, mis on üks kõige vähem loetavaid koode, mida ma kunagi näinud olen.
Igal juhul otsustasin pärast viimaste kuude rakenduse Shortcuts katmist põhjalikumalt uurida regexit. Ja ma avastasin, et paljusid piiranguid, millega olin kokku puutunud nii otseteede kui ka Automatori puhul, saab regexi abil ületada.
Teisisõnu, asi ei olnud selles, et neil rakendustel puudusid funktsioonid, vaid minul puudus haridus.
Tänases postituses õpime teiega koos regexi läbi ja lõhki. Nii saate kõigist nendest rakendustest maksimumi võtta.
Me käsitleme regexi põhitõdesid (alustades sellest, mis see on), mida saate sellega teha rakenduses Otseteed, mõningaid veebisaite ja ressursse, mida saate kasutada, kui te ei soovi ise regexit õppida, ja seejärel käsitleme regexi põhikontseptsioone ja mehhanisme. keel.
Olgu, alustame!
Sisu
-
Mis on regulaaravaldised (st regex)?
- Asjad, mida saate regexiga teha
- Kuidas saate otseteede rakendusega regexit kasutada?
- Kasutage regulaaravaldiste testimiseks veebisaiti regex101.com
- Kui te ei soovi õppida, kuidas kasutada regexit rakendusega Otseteed, lugege seda
-
Regex algajatele: alustage regexi kasutamist otseteedega
- Mis on regex-maitsed?
- Veebisaidid ja viited, mis aitavad teil otseteede abil regexi õppimist alustada
- Kuidas teha tavalist tekstiotsingut, kasutades regexit koos otseteedega
- Muutuvate komponentide lisamine oma regex-otsingutesse
- Vahemikud võivad teie otsingut laiendada
- Kuidas otseteed kasutades oma regex-otsingutest sõnu ja märke välistada
- Metamärgid võivad anda teile rohkem otsinguvõimalusi
- Kasutage otsitava teksti pikkuse määramiseks kvantoreid
- Sooviksite teada saada veel mõned kvantorid
- Otsige märke tekstistringi algusest ja lõpust
- Salvestage tekstistringid, kasutades regexi rühmitamisfunktsiooni koos otseteedega
-
Mis nüüd?
- Kuidas te selle lahti murraksite?
-
Alustage regexi kasutamist otseteedega, et viia oma automatiseerimine järgmisele tasemele
- Seonduvad postitused:
Mis on regulaaravaldised (st regex)?
Regulaaravaldis ehk "regex" on koodiosa, mida saate kasutada tekstiosa otsimiseks suurema tekstiosa sees.
Kui te ei tea, nimetatakse teises tekstiosas olevat tekstiosa programmeerimises "stringiks". Näiteks sõna "roheline" on tähemärkide jada tekstist "Ma kandsin täna rohelisi pükse".
Teisisõnu öeldes on regex viis tekstistringi asukoha leidmiseks suuremas tekstikogus. Ja kuna regex on kirjutatud koodis, saate seda kasutada üsna keerukate toimingute tegemiseks.
Näiteks kui soovite otsida sõna "e-post", saate lihtsalt kirjutada regex-koodi, mis otsib e-posti.
Kui soovite siiski leida e-kirja, mis on lõigu sees, ja te ei tea täpselt, mis see meil on, peate otsima tekstistringi, mis on vormindatud nagu meil. st string, mis järgneb "[e-postiga kaitstud]” formaadis.
Oletame nüüd, et te ei soovi leida lõigust ainult ühte meili, vaid iga meili. Võib-olla soovite need kiiresti mujale kopeerida, värskendada uude vormingusse või asendada nii, et kõik ütleksid "[e-postiga kaitstud]“.
Kui omandate regexi kasutamise ja kogemusi, saate teha kõiki neid asju ja palju muud.
Asjad, mida saate regexiga teha
Olgu, võib-olla pole äsja toodud e-kirjade näited nii praktilised. Ärge muretsege – see pole kaugeltki piirmäärast, mida saate rakendusega Otseteed kasutades regexi abil saavutada.
Üldiselt võib kõik, mida regex teha saab, ühte neljast kategooriast:
- Otsige tekstistringi suuremast tekstiosast (st otsige tekstileheküljelt sõna/stringi/stringi tüüpi).
- Veenduge, et tekstistring vastab teie soovitud vormingule (st kontrollige, kas tekstistring on suurtähtedega/järjestatud/kirjavahemärkidega).
- Asendage või sisestage tekst tekstiosa kindlasse piirkonda.
- Tükeldage teatud punktides tekstistring (nt jagage tekstiosa iga kord, kui on koma).
Sügavuse tase, mida saate kasutada seda tüüpi funktsioonidega suhtlemiseks ja kuidas saate neid kombineerida, teeb regexist uskumatult võimsa tööriista teksti sõelumiseks ja manipuleerimiseks.
Kuidas saate otseteede rakendusega regexit kasutada?
Olgu, nüüd on teil loodetavasti põhiline idee, milleks regexit kasutatakse. See on teatud tüüpi kood, mida saate kasutada teksti otsimiseks, isegi kui te ei tea täpselt, mis see tekst on.
Kuidas see teid otseteedes aitab? Sarnaselt otseteedele skriptimise lisamisega on see viis põhiautomaatikatest (Kirjuta mulle, kui välisuks avaneb) täpsemate valikute juurde (Looge minu koosolekute jaoks automaatselt kalendrisündmus iga kord, kui saan töölt Zoomi koosoleku kohta meili).
Saate kasutada regexit koos kiirklahvidega, et kontrollida, kas sisend on õige. Näiteks kui loote otsetee, mis töötab ainult URL-idega, saate otsetee alguses kasutada regexit, et veenduda, et kasutaja käivitab URL-i automatiseerimise.
Võimsate otseteede loomiseks saate kombineerida regexi skriptimisega. Näiteks, see otsetee kasutab regexit ja skriptimist, et muuta vöötkood teie lemmikpoe URL-iks.
Kui kasutate Macis otseteede rakendust (ilmub 2021. aasta sügisel), saate tekstiosaga paketttoimingute tegemiseks kasutada regexit. Näiteks võite kopeerida kõik tekstivalikus olevad meilid järjestatud loendina. Või võite privaatsuse tagamiseks asendada kõik dokumendis olevad nimed tähemärkidega *.
Võite isegi kopeerida ühest rakendusest tekstiosa, vormindada selle ümber, et see vastaks teise rakenduse eelistustele, ja seejärel kleepida sellesse teise rakendusse – seda kõike ühe paremklõpsuga.
Teisisõnu annab regex teile täieliku kontrolli tekstikäsitluse üle rakendusega Otseteed. See ei pruugi alguses tunduda kuigi kasulik, kuid nüüd, kui teate, et see on olemas, hakkate kindlasti märkama, kui palju otseteid saaks see funktsioon täiustada. Samuti märkate, et paljud otseteed pole isegi ilma regexita võimalikud.
Kasutage regulaaravaldiste testimiseks veebisaiti regex101.com
Kui hakkate otseteedega regexit kasutama, tekib pettumus:
Teie regex-koodi on tõesti raske testida. Ja see pole regexile ainuomane. Otseteede rakendusega millegi testimine on omamoodi piin. Ainus viis seda teha on otsetee käivitamine. See meetod pole halb, kui testite lihtsalt sisseehitatud otseteede funktsioone.
Kuid koodi testimiseks ei võimalda see rida-realt kontrolli ega paku palju tagasisidet.
Selleks soovitaksin kasutada regex101.com-i. See on sait, kuhu saate reaalajas regex-koodi sisestada. Saate teksti sisestada ka sama veebilehe tekstiredaktorisse. Igaühe tippimisel näete, kas teie regex töötab, miks see töötab või ei tööta, ja saate teavet leitud vastete kohta.
Regex101.com kasutab teistsugust regexi maitset kui see, mida toetab kiirklahvid (sellest pikemalt minuti pärast), kuid see on piisavalt lähedal, et teil ei tohiks liiga palju probleeme kokku puutuda.
Selle tööriista kasutamine on suurepärane, sest saate kõigepealt sinna kirjutada regexi ja seejärel kopeerida selle rakendusse Otseteed, kui see töötab ettenähtud viisil.
Kui te ei soovi õppida, kuidas kasutada regexit rakendusega Otseteed, lugege seda
Ma saan aru – mitte kõik ei taha õppida, kuidas otseteedega regexit kasutada. See on oskus ja see tähendab, et see nõuab aega ja harjutamist. See pole kaugeltki nii lihtne kui ülejäänud otseteede rakenduse pukseerimisfunktsioonid.
Ära muretse! Kuigi te ei saa otseteede rakendusest nii palju kasu kui keegi, kes pühendab aega regexi õppimiseks, on teile siiski saadaval valikuid. Nimelt on võrgus saite ja lehti, kus inimesed on loonud regex-koodi näpunäidete loendi, mida saate kopeerida ja otseteed rakendusse kleepida.
Siin on mõned lingid, mida saate vaadata, kui te ei soovi regexit õppida:
- 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
Lugege lihtsalt need lingid läbi ja peaksite leidma tavalisi regex-lahendusi otseteedele, mida soovite teha. See ei ole hariduseta valik, kuna vaatamisväärsest aru saamiseks kulub veel veidi aega. Kuid see on palju lihtsam ja ideaalne lahendus neile, kellel pole aega regexiga tegelemiseks.
Sellegipoolest pean tunnistama, et regexit ei ole liiga raske õppida, eriti kui teil on kogemusi shellkoodi või algaja programmeerimisega. Regex kõlas minu jaoks alguses jaburana, kuid pärast tund aega artiklite lugemist ja regex101.com-iga mängimist suutsin hakata oma otseteede jaoks regexit kirjutama.
See on lihtsalt tuttav asi – kui vaatate seda piisavalt kaua, ei näe see enam nii veider välja. Nii et kui teil on aega ja olete lihtsalt hirmutatud, ärge olge!
Regex algajatele: alustage regexi kasutamist otseteedega
Olgu, piisavalt eessõna! Teil peaks olema idee, mis on regex, mida see võib teha, miks peaksite seda õppima, ja piisavalt teavet, et otsustada, kas soovite seda õppida. Nüüd läheme asjasse.
Allpool on palju sisu, kuid ärge muretsege! See artikkel on pigem õppejuhend. Soovitan iga sektsiooni üle sirvida, et saaksite aimu regexi kasutatavast mehaanikast. See peaks samuti aitama teil selle ümber mähkida, kui olete ikka veel segaduses, mis on regex.
Kui olete asjade üle vaadanud, soovitan avada regex101.com ja mängida kõigi allolevate jaotiste tööriistadega. See aitab teil näha, kuidas mõisted praktikas välja näevad, ja parandada teie mälu. Kui olete seda teinud, võite käsitleda seda artiklit lihtsalt võrdluspunktina – mille juurde saate tagasi pöörduda, kui unustate regexi tükid ja küljed.
OK lähme!
Mis on regex-maitsed?
Esiteks vaatame regexi maitseid. Ärge muretsege – see ei mõjuta teie igapäevast regexi kasutamist otseteedega. See on lihtsalt midagi, millest tuleb enne alustamist teadlik olla.
Regexil on erinevaid versioone, mida nimetatakse "maitseteks". Need erinevad versioonid on ikka väga sarnased. Kui saate õppida lugema ja kirjutama ühte maitset, peaksite suutma lugeda mõnda neist. Teie regex-koodi vormingus on väikesed erinevused.
Programmeerimisel nimetatakse neid vorminguspetsiifikaid süntaksiks. See on lihtsalt viis, kuidas peate oma koodi kirjutama, et rakendus, millesse te seda kirjutate, sellest koodist aru saaks.
Siin on põhjus, miks süntaks on oluline
"Hei sõber, kuidas su päev läheb?"
"Kas lähete sõber? teie tere päev, kuidas"
Mõlemas lauses on samad sõnad, märgid ja tühikud. Kuid ainult üks on mõttekas ja seda seetõttu, et see järgib tavapärast süntaksit.
Kodeerimisel võib üks programmeerimiskeel esimesest versioonist aru saada, teisest aga mitte. Teise programmeerimiskeele jaoks võib aga teine olla täiesti mõttekas, samas kui esimene tundub jaburana. Inimene, kes oskab inglise keelt, mõistab aga ilmselt mõlema rea kavatsust, kuigi selle tähenduse väljaselgitamiseks tuleb veidi vaeva näha.
Sellised on (omamoodi) regexi erinevad maitsed. Nad kõik näevad teiega veidi teistsugused ja sarnased. Kuid peate kasutama kasutatava rakenduse jaoks õiget maitset, vastasel juhul pole sellel rakendusel aimugi, mida olete kirjutanud.
Rakendus Otseteed mõistab regexi ICU maitset, seega soovite seda maitset kasutada. Saidil regex101.com on paar erinevat maitset, mille saate lehe vasakus servas valida. See kasutab siiski PCRE-d, mis on üsna sarnane ICU-ga.
Oluline on teada, et regexil on erinevaid maitseid, sest kahtlemata kohtate veebis erinevaid maitseid. Kui leiate natuke regexit, mida soovite varastada, kuid ei saa seda otseteedega tööle panna või see lihtsalt ei näe õige välja, kontrollige, mis maitsega see on kirjutatud!
Veebisaidid ja viited, mis aitavad teil otseteede abil regexi õppimist alustada
Teine asi, mida tahan enne regexi kirjutamise tegeliku mehhanismi uurimist käsitleda, on ressursid. Ma ei väida mingil juhul, et see postitus on ammendav ressurss regexi õppimise kohta. See on mõeldud lihtsalt kasulikuks lähtepunktiks neile, kes soovivad kasutada regexit koos otseteedega.
Kui soovite regexi süveneda või tunnete, et see artikkel ei anna teile vajalikku abi, võite vaadata mõnda järgmistest artiklitest, juhenditest ja tööriistadest.
- https://regex101.com – Veebisait, mis võimaldab teil oma regex-koodi reaalajas testida.
- https://www.shortcutfoo.com/app/dojos/regex/cheatsheet - Petuleht, kui unustate, mida iga tegelane teeb
- http://www.rexegg.com – See veebisait on põhjalik allikas kõige vajaliku õppimiseks regexi kohta. Vaadake seda, kui soovite regexit valdama hakata.
- https://scottwillsey.com/blog/ios/regex1/ - See on neljaosaline ajaveebisari, mis käsitleb regexi kasutamist otseteedega. Ma kasutan sellest juhendist väga erinevat lähenemist, seega peaks see olema selle artikli jaoks kena kaasseeria.
- Stack Overflow ja Reddit on mõlemad head veebisaidid, kus saate jagada oma regex-küsimusi ning saada nõu ja vastuseid.
Need ressursid erinevad dokumendis loetletud ressurssidest Kui te ei soovi õppida, kuidas kasutada regexit rakendusega Otseteed jaotises, kuna need kõik nõuavad, et hakkaksite tegelikult õppima regexit. Need on põhjalikumad, samas kui teised on vaid võrdluspunktid.
Kuidas teha tavalist tekstiotsingut, kasutades regexit koos otseteedega
Hästi! Oleme nüüd jõudnud punktini, mida kõik on oodanud: õpime põhitõdesid regexi kasutamise kohta otseteedega.
Alustame põhiotsinguga, kuna see on lihtsaim asi, mida saate regexiga teha. Nagu varem mainitud, soovitan regex101.com avada teisel vahekaardil, et saaksite seda jälgida.
Põhimõtteliselt otsib regex (või vaste) mida iganes sellesse sisestate. Näiteks kui ma peaksin tippima Hästi
minu regex-koodina leiaks see selles juhendis iga sõna „Alright” eksemplari.
Tähtkuju, tühikud ja kirjavahemärgid on olulised. See tähendab seda Hästi
, hästi
, Hästi!
, ja hästi ,
kõik annavad erinevaid tulemusi.
Ja see ongi kõik! Iga kord, kui sisestate midagi regex-otsingusse ilma erimärke kasutamata, vastab regex kõigele, mis vastab täpselt teie sisestatud tekstile.
On üks saak! Mõned teie klaviatuuri märgid on ka spetsiaalsed regex-märgid. See tähendab, et nad täidavad regex-koodis mingit funktsiooni.
The ?
sümbol on üks selline märk. Seda kasutatakse regex-koodis kvantorina. Nii et kui proovite otsida fraasi "Hea küll?" kirjutades Hästi?
kui teie regex-kood, ei saa te seda, mida soovite.
Selle parandamiseks peate määrama, et soovite kasutada "?" stringina, mitte erimärgina. Selle või mõne muu tegelase jaoks lisage lihtsalt a \
sümbol vahetult enne tähemärki, mille eriomadusi soovite tühistada.
Nii et kui soovite otsida fraasi "Hea küll?" regexiga näeb teie kood välja järgmine:
Hästi\?
Kui te pole kindel, kas regex käsitleb konkreetset märki erimärgina, saate seda kontrollida see petuleht kõigi regexi erimärkide jaoks.
Otsige rohkem kui ühte sõna, kasutades märki "või".
Teine oluline komponent stringide otsimisel regexiga on funktsiooni „või” kasutamine. See on märk, mille saate paigutada kahe sõna/märgi vahele, et öelda: "Sobi see või see".
Näiteks kui ma tahan otsida tekstiosast sõnu "olgu" ja "olgu", kasutaksin |
iseloomu. Nagu nii:
Olgu|olgu
Kui teil on raskusi selle leidmisega |
iseloomu, hoidke vahetus klahv alla ja vajutage nuppu \
võti. See on ülalpool tagasi klahvi enamikul klaviatuuridel.
Muutuvate komponentide lisamine oma regex-otsingutesse
Olgu, nüüd, kui teate, milline on neutraalne regex, on aeg valida oma esimene eritegelane. See oleks nurksulud, mis need asjad on []
.
Ükskõik, mida te nendesse sulgudesse panite, peetakse teie regex-otsingu muutuvaks komponendiks. Sulgudesse saate panna nii palju märke, kui soovite, kuid vaste kohta kehtib ainult üks.
Olgu, see kõlab pisut keeruliselt, aga see pole nii! Siin on, kuidas see praktikas välja näeb:
-
[A] hästi
vastab lihtsalt sõnale "Hea küll". Suht mõttetu. -
[AB]hästi
vastab nii "Alright" kui ka "Blright". -
Alr[iouxyz]ght
vastab sõnadele "Alright", "Alroght", "Alrught", "Alrxght" ja nii edasi.
Saate kombineerida märke sulgudes ja kasutada samal regexi real mitut sulgu. [AB]r[i1]gh[tuvwxyz]
on kehtiv regex. Loodetavasti ei tundu see siiski nii kaootiline, kui mõni minut tagasi võis olla!
Vahemikud võivad teie otsingut laiendada
Järgmine regexi osa, mis on otseteedega kasulik, on vahemik. Vahemikud võimaldavad teil määrata märkide vahemiku, millega nõustute.
Eelmises osas võisite märgata, et minu sulgudes oli palju järjestikuseid tähti. Kõige pikem oli [tuvwxyz]
. Need tähed ilmuvad tähestikus samas järjekorras, otse üksteise kõrval.
See tähendab, et võin nende välja tippimise asemel kasutada vahemikku. See näeks välja selline:
Hästi[t-z]
See regex-koodi osa teeb sama, mis Olgu[tuvwxyz]
. Seda on lihtsalt ilusam ja lihtsam kirjutada.
Võite selle sama vahemiku asendada [a-z]
kui soovite, et see aktsepteeriks kõiki tähestiku väiketähti. Või võite kasutada [0-9]
kui soovite vastu võtta mis tahes ühekohalise numbri.
Samuti saate kombineerida vahemikke samas kambris. Näiteks see Alr[i-ux-z]ght
aktsepteerib "Alraght", "Alroght", "Alrxght" ja "Alryght", kuid see ei aktsepteeri "Alraght" või "Alrvght".
Muide, on ka teisi variatsioone sõnast „Alright”, mida see kood aktsepteerib, ja palju muud, mida see ei aktsepteeri. See on vaid lühike valik asjade lühiajaliseks hoidmiseks.
Kui teil on raske aru saada, millest [i-ux-z]
tähendab, et see võib aidata näha seda nii:
[i-u, x-z]
See ei ole õige regexi süntaks – te ei tohiks vahemike eraldamiseks kasutada koma. Kuid loodetavasti aitab see sellel mõttekamaks muuta!
Vahekondade eraldamiseks ei pea te regexis komasid kasutama ja te ei pea vahemikke üksteise kõrvale panema. Võite selle muuta [i-uabcx-z]
. See aktsepteeriks samu vahemikke, mis varem, pluss märke "a", "b" ja "c".
Kuidas otseteed kasutades oma regex-otsingutest sõnu ja märke välistada
Ok, nüüd me jõuame kuhugi! Kui olete seda artiklit siiani jälginud, peaksite saama vaadata allolevat koodi ja mõista, mille jaoks see sobib:
Ap[p-r]le[Tt]ool[BbLF]ox
Kui saate seda lugeda, siis teate, et regex-koodi osa sisaldab palju sõna "AppleToolBox" võimalikest variatsioonidest. Mis siis, kui sooviksime vähendada vastuvõetavate variatsioonide arvu, muutmata meie valikut?
Siin tuleb sisse tegelane "mitte". See näeb välja selline: ^
. Kui teil on raske seda klaviatuurilt leida (nagu minul), hoidke all vahetus ja vajutage nuppu 6 klahvi oma klaviatuuril.
Et kasutada ^
märk, asetage see märgi algusesse, mille soovite välistada.
Seal on konks! The ^
märk ei tööta väljaspool regex-funktsiooni. Te ei saa seda lihtsalt asetada tähe "A" ette, et see täht teie otsingust välja jätta. Regulaarne kood ^A
otsib lihtsalt suurtähte "A".
Selle asemel kombineerige see sulgude ja muude regexi erimärkidega.
Näiteks kui ma tahaksin otsida mis tahes esinemisjuhtu sõna "Alright", mis ei alga tähega "A", kasutaksin koodi [^A]Hea küll
.
Saate seda isegi vahemikega kombineerida! Lihtsalt pange see sulu algusesse ja kõik selles suluses, sealhulgas vahemikud, jäetakse teie otsingust välja. Nagu nii:
Mida teha, kui soovite teatud sõna oma otsingust välja jätta?
Mul oli raske seda teavet leida. Stack Overflow kasutajal oli lahendus siiski olemas ja see näeb välja järgmine:
^(?!(sõna)$).+$
Lihtsalt asenda sõna
mis tahes sõnaga, mille soovite oma otsingust välja jätta. Nagu nii:
Saate lugeda seda Stack Overflow postitust siin kui soovite selle konkreetse kasutusjuhtumi kohta rohkem teada saada.
Metamärgid võivad anda teile rohkem otsinguvõimalusi
See viib meid metamärkide juurde. Metamärk, mis on punkt .
, kasutatakse mis tahes üksiku tähemärgi tähistamiseks, mitte ühtegi. Kui sa lihtsalt kirjutad .
otseteedega regex-koodina tagastab see tekstiosa iga tähemärgi individuaalse vastena.
Muidugi ei soovita ma seda sel eesmärgil kasutada! Selle asemel soovitan seda kasutada sõnas ühe tähemärgi asemel. Näiteks, Olgu
vastab "Alright", "Alrxght", "Alr
Ja see on enam-vähem kõik! Metamärki on üsna lihtne mõista. See sobib kõigega! See aitab leida stringe, mis vastavad kindlale vormingule ja millel on ainulaadsed tähemärgid.
Näiteks meilid näevad kõik üsna sarnased välja, ilma et need oleksid samad. Metamärk võib aidata teil kombineerida elemente, mida teate, et need seal asuvad (nt „.com” ja „@”) tähemärkidega, mida te ei tea (nt „my_email567”, iCloud või „Gmail”).
Veel üks huvitav kasutusjuht on rakenduse kasutamine .
kindla pikkusega stringide leidmiseks.
Näiteks kui ma tahan tekstiosast leida iga neljakohalise stringi, võiksin seda kasutada ...
mille mõlemal küljel on tühik.
Ja siin on kõik seitsmekohalised stringid samas tekstis:
Pange tähele, et see ei ole ideaalne meetod teatud pikkusega stringide leidmiseks. Nagu näete ülaltoodud näidetes, sobitatakse mõned stringid, mis ei tohiks olla, ja mõnda, mis oleks pidanud olema, oleks ignoreeritud. Huvitav on lihtsalt meeles pidada, et saate kasutada .
tähemärki märkide loendamiseks.
Samuti pidage meeles, et .
on regexi erimärk. See tähendab, et peate lisama a \
selle ees, kui soovite perioode otsida. See tähendab, et peate kasutama Hästi\.
vasteks "Olgu".
Kasutage otsitava teksti pikkuse määramiseks kvantoreid
Olgu, nii et saate tehniliselt kasutada .
märk, et leida string, mis võtab teatud arvu märke. Enamasti soovite siiski olla täpsem.
Siin tulevadki kvantaatorid sisse. Kvantorid võimaldavad teil määrata otsitava stringi pikkuse, kui kasutate regexit koos otseteedega.
Näiteks öelge, et soovite leida sõna, mis on konkreetselt kolm tähte pikk. Selle täpsustamiseks soovite kasutada järgmisi sulgusid:
{}
Kui asetate need sulud nende järele []
sulgudes, täpsustate, et soovite stringi, mis vastab selles sisalduvate märkide arvule {}
ja selles määratud tähemärkide vahemik []
.
Olen kindel, et sellel pole praegu erilist mõtet, nii et vaatame näidet!
Oletame, et soovite leida tekstiosast mainitud aastaid. Kuna aasta koosneb neljast numbrist (ilmselgelt mitte igal aastal läbi aegade, lihtsalt jälgige mind siin), võite kasutada seda koodi selles tekstis aastate vastendamiseks:
[0-9]{4}
See kood ütleb, et tahame stringi, mis koosneb tähemärkidest vahemikus 0 kuni 9, mis on konkreetselt nelja tähemärgi pikkune. Järgmisel ekraanipildil näete, kuidas see konkreetse stringi leiab:
Pean märkima, et selle regex-koodiga on probleeme ja see ei võta arvesse tühikuid ega kirjavahemärke. Nii et kui kood leiab numbri, mis on pikem kui neli tähemärki, näiteks "12345678", leiab see stringi "1234" ja stringi "5678".
Selle probleemi lahendamiseks lisage koodi algusesse tühik ja koodi järele sulg {4}
mis sisaldab teist tühikut, punkti, küsimärki, koma ja hüüumärki. Nii jätab see tähelepanuta pikad numbrijadad, ilma et puuduksid numbrijadad, mille lõpus on tühiku asemel kirjavahemärgid.
Samuti võite soovida kasutada kvantoreid, et määrata rohkem kui üks stringi pikkus. Näiteks võib-olla tahan leida nelja tähemärgi pikkuse stringi, aga ka seitsme ja üheteistkümne pikkuse stringi. Siin on, kuidas see välja näeks:
[a-z]{4,7,11}
Sooviksite teada saada veel mõned kvantorid
Ok, nii et kvantoreid on veel! Need viimased kvantorid on mõeldud siis, kui soovite määrata stringi pikkuse ilma liiga konkreetsed.
Oletagem näiteks, et soovite leida mis tahes pikkusega stringi, millele regex sobiks. Nagu nimi! Nimed (lääneriikides) algavad ühe suure tähega ja lõpevad juhusliku hulga väiketähtedega, millele järgneb tühik. Nime leidmiseks kirjutage järgmine kood:
[A-Z][a-z]*
[A-Z]
määrab, et stringi esimene märk peab olema suurtäht. [a-z]*
täpsustab, et ülejäänud string peaks koosnema väiketähtedest, kuid pole oluline, mitu tähte järgneb. Ja tühik lõpus tähendab, et see lõpetab vaste, kui ta leiab väiketähtede lõpust tühiku.
Kuldne kombinatsioon regexis on .*
. See tähendab, et sobitage iga tähemärgiga lõputult. Teisisõnu, see ühtib kogu tekstiosaga ühe üksusena.
Järgmine kvantor, mida peate teadma, on +
. See on just selline *
välja arvatud see, et see ei sobi null tähemärgiga stringile. *
sobib mis tahes pikkusega stringiga, sealhulgas stringidega, millel pole pikkust. +
, teisest küljest vajab stringi, mis sisaldab vähemalt ühte või enamat tähemärki.
Lõpuks on seal ?
kvantor. See on veider. See määrab, et string on kas null või ühe tähemärgi pikkune. See on kõik – kas mitte midagi või ainult üks. Nii et kui kasutate koodi [a-z]?
Kui alguses ja lõpus on tühik, otsib see tekstiosast üksikuid tähti.
Otsige märke tekstistringi algusest ja lõpust
Oleme jõudmas lõpusirgele regexi kasutamise juhendi otseteedega! Otseteedega saate kasutada veel kahte tüüpi regex-koodi.
Esimesed on märgid, mis võimaldavad teil stringe sobitada nende alguse ja/või lõpu järgi.
Kui see pole sulgudes, siis ^
tegelase roll muutub tähendusest "välista" asemel "algab". See määrab, et string peaks algama sellega, mida soovite. Näiteks kui kirjutate ^A
, mis vastaks tähega "A" stringides "Alright", "Apple" ja "A".
See ei sobi siiski kogu sõnaga. Selleks peaksite selle muutma ^A[A-Za-z]*
. See ühtib lõigu/stringi esimese sõnaga, kui see sõna algab suure tähega "A".
Vahemärkusena võid kirjutada [A-Za-z]
nagu [A-z]
. See tähendab sama asja, ma lihtsalt leian, et esimene on õppimise ajal natuke selgem.
Stringi lõpu määramiseks soovite kasutada $
iseloomu. See toimib samamoodi nagu ^
iseloomu. Ainus erinevus on see, et kirjutate selle pigem sulu/stringi lõppu kui algusesse.
Näiteks kui soovite leida stringe/lõike, mis lõpevad tähega "le", peaksite kasutama koodi [A-z]*le$
. See vastab sõnadele "Tabel", "õun" ja "võimeline", kui need on stringi või lõigu lõpus.
Regex isegi eitab seda vastet, kui stringi lõpus on tühik või kirjavahemärk. "Tabel." ei vasta sellele koodile.
Selle parandamiseks võite kasutada kirjavahemärke. See kood võtab arvesse erinevaid kirjavahemärkide ja tühikute vorme, mis võivad esineda stringi lõpus, sealhulgas kirjavahemärki, millele järgneb tühik.
[A-z]*(le[\.\?!, ]?[ ]?)$
See kood vastab sõnadele "Võimeline", "tabel", "stabiilne" ja "võimeline? “.
Salvestage tekstistringid, kasutades regexi rühmitamisfunktsiooni koos otseteedega
Hästi! Olete jõudnud meie AppleToolBoxi juhendi, mis käsitleb regexi kasutamist otseteedega, lõpuni. Õppida on jäänud veel vaid üks regex-funktsioon ja see on rühmitamine.
Rühmitamine on vaieldamatult regexi kõige olulisem funktsioon, kuna see võimaldab teil kirjutatud regex-koodiga asju teha. Ilma selleta on regex lihtsalt otsingufunktsioon. See võib teile öelda ainult seda, kas string eksisteerib suuremas tekstikogus, st see tagastab väärtuse "tõene" või "väär".
Rühmitamise abil saate aga oma regex-koodi tulemused salvestada. See tähendab, et saate kopeerida vasteid, salvestada need muutujatesse, asendada need muu tekstiga, muuta nende vormingut ja kõike muud, mida soovite regexiga teha.
Õnneks on rühmitamine ülilihtne! Lihtsalt pange sulgudesse kõik, mida soovite rühmitada ()
. Mida iganes sulgudesse paned, käsitletakse rühmana.
Kui panete sulgudesse terve rea regex-koodi, näiteks (.*@.*\..{3})
, siis jäetakse see rühm teie koodiga meelde, mis võimaldab seda hiljem tagasi kutsuda.
On oluline, et kasutaksite rühmi ainult siis, kui seda vajate. Kuna need on mällu salvestatud, võivad need teie koodi jõudlust vähendada. Salvestage grupid selleks ajaks, kui neid vaja läheb!
Gruppe saate kasutada ka organiseerimiseks
Võite kasutada ka rühmi oma regex-koodi korraldamiseks otseteede abil. Kui teete seda, ei jäeta sulgudes olevat rühma tingimata meelde.
Näiteks öelge, et tahan vastendada sõna "Tere", välja arvatud see, et mind ei huvita, mis on viimane täht. See võib olla mis tahes väike- või suurtäht või isegi number. “Hell3838djdjajaksks” ja “Tere” tuleks lugeda vasteteks. Seevastu "põrgut" ei tohiks arvestada.
Selle toimimiseks kirjutan koodi Põrgu[A-z]|[0-9]+
. Aga sellise tulemuse ma saan:
Põhjus, miks see ei vasta ootustele, on see, et +
rakendatakse ainult [0-9]
sulg. Pean seda rakendama mõlemale sulgule.
Lisaks ütleb see kood, et ma tahan kumbagi põrgu[A-z]
või[0-9]
. Seega sobib see sõnadega, mis algavad sõnaga "põrgu" ja lõpevad tähega, või otsib mis tahes numbrijada. Mida ma tegelikult vajan, on see, et see sobiks sõna "põrgu" juhtudega, mis lõppevad tähe või numbriga.
Selle parandamiseks saan kasutada rühma ja kirjutada koodi ümber Põrgu([A-z]|[0-9])+
. Nüüd otsib see sõna "põrgu", millele järgneb mis tahes täht või number. Ja kuna +
rakendatakse mõlemale sulgule, võib see olla mis tahes tähtede ja numbrite kombinatsioon, kui on olemas vähemalt üks täht või number.
Nagu näete alloleval ekraanipildil, lahendab see rühm minu probleemi ilma sellesse rühma teavet tingimata salvestamata:
Mis nüüd?
Ja see ongi kõik! See on peaaegu kõik, mida võiksite otseteedega regexi kasutamise kohta teada saada. Loodetavasti tunnete end piisavalt enesekindlalt, et hakata nüüd regexiga katsetama, isegi kui see ei olnud teie jaoks alguses mõttekas.
Nüüd, kui teate regexi põhitõdesid, olete valmis seda oma otseteedes kasutama! Otseteed aktsepteerivad regex-sisendit järgmistes toimingutes:
- Sobitage tekst
- Asenda tekst
Neid kahte otseteede toimingut kasutades saate otseteedesse lisada regexi.
Ühendage see otseteede automatiseerimisvõimalustega ja teie käsutuses on üsna võimas tööriist.
Saate kasutada regexit, et muuta otseteedes teksti vormindamine lihtsamaks, hankida teavet meilidest, tekstidest, veebisaitidelt, failid ja kalendrisündmused, looge tekst, mis järgib määratud vormingut, kontrollige, kas sisend on õigesti sisestatud, ja rohkem.
Näiteks öelge, et soovite e-kirjade jaoks sobitada. Võib-olla peate kontrollima, kas tekstistring on meil, või soovite tõmmata meili(id) tekstiosast.
Kuidas te selle lahti murraksite?
Teate, et meili põhistruktuur koosneb tähtede, numbrite ja märkide kombinatsioonist, millele järgneb sümbol @, seejärel millele järgneb veebisaidi nimi (nt Gmail või iCloud), millele järgneb ".com", ".org" või mõni muu kolmekohaline tipptasemel domeeni.
Selle kirjutamiseks regexis peate määrama, et soovite vähemalt ühe märgi pikkuse stringi, millele järgneb kohe sümboliga "@", seejärel veel üks vähemalt ühest märgist koosnev string, millele järgneb ".", seejärel kolmest tähest koosnev string tegelased. See näeks välja selline:
[e-postiga kaitstud]+\..{3}
Kui kleepite selle kausta Sobitage tekst või Asenda tekst toimingud otseteedes, on teil automaatika, mis suudab meiliaadressi leida, talletada ja sellega manipuleerida.
Sellist probleemilahendust saate kasutada oma regex-lahenduste väljamõtlemiseks või teiste võrgus tehtud lahenduste leidmiseks!
Alustage regexi kasutamist otseteedega, et viia oma automatiseerimine järgmisele tasemele
Ja see, sõbrad, on tõesti nii. Loodan, et teile meeldis seda artiklit jälgida! See on üks ambitsioonikamaid teoseid, mille olen AppleToolBoxi jaoks kunagi kirjutanud. Pidin end regexi kirjutama õpetama ja loodan, et seda tehes sain aidata teil seda õppida.
Regexi kasutamine koos otseteedega ei erine nutitelefonis või arvutis millegi muu tegemise õppimisest. Varuge lihtsalt aega ja kannatust ning lõpuks jõuate selleni.
Rohkemate juhendite, õpetuste ja uudiste saamiseks kõigi Apple'i asjade kohta vaadake ülejäänud osa AppleToolBoxi ajaveebi.
Hästi [A-Z][a-z]+
, Kohtume järgmisel korral!