Ako začať používať Regex s aplikáciou Skratky

Počas posledného mesiaca som sa venoval aplikáciám Skratky a Automator v systémoch iOS a macOS. Obidve sú hnacou silou, pokiaľ ide o automatizáciu v ekosystéme Apple, a počnúc macOS Monterey tento rok na jeseň budú skratky hlavnou automatizačnou aplikáciou na všetkých zariadeniach Apple. To je dôvod, prečo som chcel tento článok stráviť diskusiou o veľmi silnej téme: Používanie regulárneho výrazu s aplikáciou Skratky.

Aj keď mám nejaké vzdelanie v informatike a programovaní, akosi som sa nikdy nestretol s regulárnym výrazom. Možno ma to meno vystrašilo, možno to bol kód, ktorý je jedným z najmenej čitateľných kódov, aké som kedy videl.

V každom prípade som sa rozhodol pozrieť sa ďalej na regulárny výraz po pokrytí aplikácie Skratky za posledných niekoľko mesiacov. Zistil som, že veľa obmedzení, na ktoré som narazil pri skratkách, ako aj pri Automatore, sa dá prekonať regulárnym výrazom.

Inými slovami, nebolo to tak, že by týmto aplikáciám chýbali funkcie, ale že mi chýbalo vzdelanie.

Takže v dnešnom príspevku sa vy a ja spoločne naučíme jemnosti a nevýhody regulárneho výrazu. Týmto spôsobom môžete z každej z týchto aplikácií vyťažiť maximum.

Pokryjeme základy regulárneho výrazu (počnúc tým, čo to je), čo s ním môžete robiť v aplikácii Skratky, na niektorých webových stránkach a zdroje, ktoré môžete použiť, ak sa sami nechcete učiť regulárny výraz, a potom prejdeme k základným konceptom a mechanike regulárneho výrazu Jazyk.

Dobre, začnime!

Obsah

  • Čo sú regulárne výrazy (t. j. regulárny výraz)?
    • Veci, ktoré môžete robiť s regulárnym výrazom
  • Ako môžete použiť regulárny výraz s aplikáciou Skratky?
  • Na otestovanie regulárnych výrazov použite regex101.com
  • Ak sa nechcete naučiť používať regulárny výraz s aplikáciou Skratky, prečítajte si toto
  • Regulárny výraz pre začiatočníkov: Začnite používať regulárny výraz pomocou skratiek
    • Aké sú príchute regulárneho výrazu?
    • Webové stránky a referencie, ktoré vám pomôžu začať sa učiť regulárny výraz pomocou skratiek
    • Ako vykonať základné vyhľadávanie textu pomocou regulárneho výrazu so skratkami
    • Pridanie variabilných komponentov do vyhľadávaní podľa regulárnych výrazov
    • Rozsahy môžu rozšíriť vaše vyhľadávanie
    • Ako vylúčiť slová a znaky z vyhľadávania regulárnych výrazov pomocou skratiek
    • Zástupné znaky vám môžu poskytnúť viac možností vyhľadávania
    • Použite kvantifikátory na určenie dĺžky textu, ktorý hľadáte
    • Existuje niekoľko ďalších kvantifikátorov, o ktorých by ste chceli vedieť
    • Vyhľadajte znaky na začiatku a na konci reťazca textu
    • Uložte textové reťazce pomocou funkcie zoskupovania regulárneho výrazu so skratkami
  • Teraz čo?
    • Ako by ste to rozobrali?
  • Začnite používať regulárny výraz so skratkami a posuňte svoju automatizáciu na ďalšiu úroveň
    • Súvisiace príspevky:

Čo sú regulárne výrazy (t. j. regulárny výraz)?

Regulárny výraz alebo „regex“ je kúsok kódu, ktorý môžete použiť na vyhľadanie časti textu vo väčšom kúsku textu.

V prípade, že to neviete, časť textu v inom texte sa v programovaní nazýva „reťazec“. Napríklad slovo „zelená“ je reťazec znakov z textu „Dnes som mal na sebe zelené nohavice“.

Inak povedané, regulárny výraz je spôsob, ako nájsť reťazec textu vo väčšom texte. A pretože regex je napísaný v kóde, môžete ho použiť na vykonávanie niektorých dosť zložitých operácií.

Napríklad, ak chcete vyhľadať slovo „e-mail“, môžete jednoducho napísať kód regulárneho výrazu, ktorý vyhľadá e-mail.

Ak však chcete nájsť e-mail, ktorý sa nachádza v odseku, a neviete presne, čo tento e-mail je, budete musieť vyhľadať reťazec textu, ktorý je naformátovaný ako e-mail. reťazec, ktorý nasleduje za „[e-mail chránený]“.

Teraz povedzme, že nechcete nájsť iba jeden e-mail z odseku, ale aj každý email. Možno ich budete chcieť rýchlo skopírovať niekam inam, aktualizovať ich na nový formát alebo ich nahradiť tak, aby všetky hovorili „[e-mail chránený]“.

Keď budete s regulárnym výrazom stále zručnejší a skúsenejší, budete môcť robiť všetky tieto veci a ešte viac.

Veci, ktoré môžete robiť s regulárnym výrazom

Dobre, takže príklady s e-mailom, ktoré som práve uviedol, nie sú také praktické. Nebojte sa – to je ďaleko od limitu toho, čo môžete dosiahnuť pomocou regulárneho výrazu v aplikácii Skratky.

Všeobecne povedané, všetko, čo regulárny výraz dokáže, spadá do jednej z týchto štyroch kategórií:

  1. Nájdite reťazec textu vo väčšom kúsku textu (t. j. hľadanie slova/reťazca/typu reťazca na stránke textu).
  2. Potvrďte, že reťazec textu zodpovedá požadovanému formátu (t. j. skontrolujte, či je reťazec textu správne zapísaný veľkými písmenami/zoradenými/interpunkčnými).
  3. Nahraďte alebo vložte text do určitej oblasti textu.
  4. Rozdeľte reťazec textu v určených bodoch (napr. rozdeľte časť textu vždy, keď je tam čiarka).

Úroveň hĺbky, ktorú môžete použiť na interakciu s každým z týchto druhov funkcií, a spôsob, akým ich môžete kombinovať, robí z regulárneho výrazu neuveriteľne výkonný nástroj na analýzu textu a manipuláciu s ním.

Ako môžete použiť regulárny výraz s aplikáciou Skratky?

Dobre, takže teraz snáď máte základnú predstavu o tom, na čo sa regex používa. Je to typ kódu, ktorý môžete použiť na vyhľadávanie textu, aj keď presne neviete, o aký text ide.

Ako vám to teda pomôže v Skratkách? Podobne ako pri pridávaní skriptovania do skratiek je to spôsob, ako prejsť od základnej automatizácie (Napíšte mi, keď sa otvoria predné dvere) na pokročilejšie možnosti (Automaticky vytvoriť udalosť v kalendári pre moje stretnutia vždy, keď dostanem z práce e-mail na stretnutie so Zoomom).

Na kontrolu správnosti zadania môžete použiť regulárny výraz so skratkami. Ak napríklad vytvoríte skratku, ktorá funguje iba s adresami URL, môžete použiť regulárny výraz na začiatku skratky, aby ste sa uistili, že používateľ používa automatizáciu na adrese URL.

Môžete skombinovať regulárny výraz so skriptovaním a vytvoriť tak výkonné skratky. Napríklad, túto skratku používa regulárny výraz a skriptovanie na premenu čiarového kódu na adresu URL vášho obľúbeného obchodu.

Pri používaní aplikácie Skratky na Macu (na jeseň roku 2021) môžete použiť regulárny výraz na vykonávanie dávkových akcií s kúskom textu. Môžete napríklad skopírovať všetky e-maily vo výbere textu ako zoradený zoznam. Alebo môžete nahradiť všetky názvy v dokumente znakmi „*“, aby ste zaistili súkromie.

Môžete dokonca skopírovať text z jednej aplikácie, preformátovať ho tak, aby zodpovedal preferenciám inej aplikácie, a potom ho vložiť do inej aplikácie, a to všetko jediným kliknutím pravým tlačidlom myši.

Inými slovami, regulárny výraz vám dáva úplnú kontrolu nad manipuláciou s textom pomocou aplikácie Skratky. Na prvý pohľad to nemusí znieť veľmi užitočne, ale teraz, keď viete, že existuje, si určite začnete všímať, koľko skratiek by sa dalo touto funkciou vylepšiť. A tiež si všimnete, že veľa skratiek nie je možné bez regulárneho výrazu.

Na otestovanie regulárnych výrazov použite regex101.com

Keď začnete používať regulárny výraz so skratkami, dostanete sa do bodu frustrácie:

Je naozaj ťažké otestovať váš regulárny kód. A to nie je jedinečné pre regulárny výraz. Testovanie čohokoľvek pomocou aplikácie Skratky je trochu trápne. Jediný spôsob, ako to urobiť, je spustiť skratku. Táto metóda nie je zlá, keď práve testujete vstavané funkcie skratiek.

Ale pre testovanie kódu to neumožňuje kontrolu riadok po riadku a neponúka veľa spätnej väzby.

Na tento účel by som vám odporučil použiť regex101.com. Je to stránka, do ktorej môžete zadať kód regulárneho výrazu v reálnom čase. Môžete tiež zadať text do textového editora na tej istej webovej stránke. Pri zadávaní každého z nich uvidíte, či váš regulárny výraz funguje, prečo funguje alebo nefunguje, a získate informácie o nájdených zhodách.

regex101.com používa inú príchuť regulárneho výrazu ako tú, ktorú podporujú skratky (viac o tom za minútu), ale je dostatočne blízko, aby ste nenarazili na príliš veľa problémov.

Používanie tohto nástroja je skvelé, pretože tam môžete najskôr napísať svoj regulárny výraz a potom ho skopírovať do aplikácie Skratky, keď bude fungovať podľa plánu.

Ak sa nechcete naučiť používať regulárny výraz s aplikáciou Skratky, prečítajte si toto

Chápem to – nie každý sa bude chcieť naučiť používať regulárny výraz so skratkami. Je to zručnosť a to znamená, že si to bude vyžadovať čas a prax. Nie je to ani zďaleka také jednoduché ako ostatné funkcie presúvania myšou v aplikácii Skratky.

Žiaden strach! Aj keď z aplikácie Skratky nebudete môcť vyťažiť toľko ako niekto, kto si nájde čas na to, aby sa naučil regulárny výraz, stále máte k dispozícii možnosti. Konkrétne existujú weby a stránky online, kde ľudia vytvorili zoznam kousnutí regulárneho kódu, ktorý môžete skopírovať a vložiť do aplikácie Skratky.

Tu je niekoľko odkazov, ktoré si môžete pozrieť, ak sa nechcete učiť regulárny výraz:

  • 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

Stačí si prečítať tieto odkazy a mali by ste byť schopní nájsť bežné riešenia regulárnych výrazov pre skratky, ktoré chcete vytvoriť. Toto nebude možnosť bez vzdelávania, pretože bude ešte chvíľu trvať, kým pochopíte, na čo sa pozeráte. Je to však oveľa jednoduchšie a ideálne riešenie pre niekoho, kto nemá čas zadávať regulárny výraz.

To znamená, že musím priznať, že regex nie je príliš ťažké sa naučiť, najmä ak máte nejaké skúsenosti s kódom shell alebo programovaním pre začiatočníkov. Regulárny výraz mi spočiatku znel ako nezmysel, ale po hodine čítania článkov a hrania sa s regex101.com som mohol začať písať regulárny výraz pre svoje skratky.

Je to len známa vec – keď sa na to pozriete dostatočne dlho, prestane to vyzerať tak zvláštne. Takže ak máte čas a ste práve vystrašení, nebuďte!

Regulárny výraz pre začiatočníkov: Začnite používať regulárny výraz pomocou skratiek

Dobre, dosť predslovu! Mali by ste mať predstavu o tom, čo je regulárny výraz, čo dokáže, prečo by ste sa ho mali naučiť a dostatok informácií na to, aby ste sa rozhodli, či sa ho chcete naučiť. Teraz sa pustíme do toho najhrubšieho.

Nižšie je veľa obsahu, ale nebojte sa! Tento článok bude skôr študijným sprievodcom. Odporúčam prelistovať každú sekciu, aby ste získali predstavu o mechanike, ktorú regulárny výraz používa. To by vám tiež malo pomôcť zabaliť si to hlavu, ak ste stále zmätení v tom, čo je regulárny výraz.

Po prečítaní vecí vám odporúčam otvoriť regex101.com a pohrať sa s každým z nástrojov v každej sekcii nižšie. Pomôže vám to vidieť, ako koncepty vyzerajú v praxi, ako aj zlepšiť vašu pamäť. Potom, čo to urobíte, môžete tento článok považovať len za referenčný bod – niečo, k čomu sa môžete vrátiť, keď zabudnete na kúsky regulárneho výrazu.

OK Poďme!

Aké sú príchute regulárneho výrazu?

Najprv sa pozrieme na príchute regulárneho výrazu. Nebojte sa – to neovplyvní vaše každodenné používanie regulárneho výrazu so skratkami. Je to len niečo, čo si treba uvedomiť skôr, ako začnete.

Existujú rôzne verzie regulárneho výrazu, ktoré sú známe ako „príchute“. Tieto rôzne verzie sú stále veľmi podobné. Ak sa dokážete naučiť čítať a písať jednu príchuť, mali by ste byť schopní prečítať ktorúkoľvek z nich. Budú len malé rozdiely v tom, ako by mal byť naformátovaný váš regex kód.

V programovaní sú tieto špecifiká formátovania známe ako „syntax“. Je to len spôsob, akým musíte napísať kód, aby ho aplikácia, do ktorej ho píšete, pochopila.

Tu je dôvod, prečo je syntax dôležitá

"Ahoj kamarát, aký máš deň?"

„Ideš kamarát? ako tvoj hej deň"

Obe vety majú rovnaké slová, znaky a medzery. Iba jeden však dáva zmysel, a to preto, že sa riadi konvenčnou syntaxou.

Pri kódovaní môže jeden programovací jazyk rozumieť prvej verzii, ale nie druhej. Pre iný programovací jazyk však druhý môže dávať úplný zmysel, zatiaľ čo prvý vyzerá ako blábol. Pre niekoho, kto hovorí po anglicky, však pravdepodobne pochopíte zámer oboch riadkov, aj keď jeden bude vyžadovať trochu práce, aby ste pochopili význam.

To je (niečo), aké sú rôzne príchute regulárneho výrazu. Všetky budú vyzerať trochu inak a trochu podobne ako vy. Musíte však používať správnu príchuť pre aplikáciu, ktorú používate, inak táto aplikácia nebude mať potuchy, čo ste napísali.

Aplikácia Skratky rozumie príchuti regulárneho výrazu na jednotke intenzívnej starostlivosti, takže to je príchuť, ktorú budete chcieť použiť. Stránka regex101.com má niekoľko rôznych príchutí, z ktorých si môžete vybrať na ľavej strane stránky. Používa však PCRE, ktorá je dosť podobná JIS.

Je dôležité vedieť, že existujú rôzne príchute regulárneho výrazu, pretože online nepochybne narazíte na rôzne príchute. Ak nájdete kúsok regulárneho výrazu, ktorý chcete ukradnúť, ale nemôžete ho spustiť pomocou skratiek alebo jednoducho nevyzerá správne, skontrolujte, v akej chuti je napísaný!

Webové stránky a referencie, ktoré vám pomôžu začať sa učiť regulárny výraz pomocou skratiek

Ďalšia vec, ktorú chcem pokryť predtým, ako začneme skúmať skutočnú mechaniku písania regulárneho výrazu, sú zdroje. V žiadnom prípade netvrdím, že tento príspevok je vyčerpávajúci zdroj o učení regulárneho výrazu. Má to byť len užitočný východiskový bod pre tých, ktorí chcú používať regulárny výraz so skratkami.

Ak sa chcete hlbšie ponoriť do regulárneho výrazu alebo máte pocit, že vám tento článok neposkytuje potrebnú pomoc, môžete si pozrieť niektoré z týchto článkov, sprievodcov a nástrojov:

  • https://regex101.com – Webová stránka, ktorá vám umožní otestovať váš regex kód v reálnom čase.
  • https://www.shortcutfoo.com/app/dojos/regex/cheatsheet - Cheat sheet, keď zabudnete, čo každá postava robí
  • http://www.rexegg.com – Táto webová stránka je komplexným zdrojom informácií o všetkom, čo potrebujete vedieť o regulárnych výrazoch. Pozrite si toto, ak sa chcete naučiť používať regulárny výraz.
  • https://scottwillsey.com/blog/ios/regex1/ – Toto je štvordielna séria blogov o používaní regulárneho výrazu so skratkami. Používam veľmi odlišný prístup od tohto sprievodcu, takže by mal byť pekným sprievodným znakom tohto článku.
  • Stack Overflow a Reddit sú dobré webové stránky na zdieľanie otázok o regulárnych výrazoch a pokroku, aby ste získali rady a odpovede.

Tieto zdroje sa líšia od zdrojov uvedených v Ak sa nechcete naučiť používať regulárny výraz v aplikácii Skratky pretože všetky budú vyžadovať, aby ste sa skutočne začali učiť regulárny výraz. Sú komplexnejšie, zatiaľ čo ostatné sú len referenčné body.

Ako vykonať základné vyhľadávanie textu pomocou regulárneho výrazu so skratkami

Dobre! Teraz sme sa dostali do bodu, na ktorý všetci čakali: Naučíme sa základy používania regulárneho výrazu so skratkami.

Začnime základným vyhľadávaním, pretože je to najjednoduchšia vec, ktorú môžete s regulárnym výrazom urobiť. Ako už bolo spomenuté, odporúčam mať regex101.com otvorený na inej karte, aby ste mohli sledovať.

Vo svojej najzákladnejšej podobe bude regulárny výraz hľadať (alebo zápas) čokoľvek doň napíšete. Napríklad, keby som mal písať Dobre ako môj regex kód nájde každý výskyt slova „V poriadku“ v tejto príručke.

Dôležité sú malé a veľké písmená, medzery a interpunkcia. To znamená, že Dobre, v poriadku, Dobre!a dobre, všetky prinesú rôzne výsledky.

A je to! Kedykoľvek zadáte niečo do vyhľadávania podľa regulárneho výrazu bez použitia akýchkoľvek špeciálnych znakov, regulárny výraz bude zodpovedať všetkému, čo sa presne zhoduje s tým, čo ste zadali.

Má to jeden háčik! Niektoré znaky na klávesnici sú tiež špeciálne regulárne výrazy. To znamená, že vykonávajú nejakú funkciu v kóde regulárneho výrazu.

The ? symbol je jedným z takýchto znakov. Používa sa v kóde regulárneho výrazu ako kvantifikátor. Ak sa teda pokúsite vyhľadať výraz „V poriadku?“ písaním dobre? ako váš regex kód nedostanete to, čo chcete.

Ak to chcete vyriešiť, musíte zadať, že chcete použiť „?“ ako reťazec, nie ako špeciálny znak. Ak to chcete urobiť pre túto postavu alebo akúkoľvek inú, stačí pridať a \ symbol tesne pred znakom, ktorého špeciálne vlastnosti chcete zrušiť.

Takže ak chcete hľadať „V poriadku?“ s regulárnym výrazom bude váš kód vyzerať takto:

Dobre\?

Ak si nie ste istí, či sa konkrétny znak považuje podľa regulárneho výrazu za špeciálny znak, môžete to skontrolovať tento cheat list pre všetky špeciálne znaky v regulárnom výraze.

Vyhľadajte viac ako jedno slovo pomocou znaku „alebo“.

Ďalšou dôležitou súčasťou vyhľadávania reťazcov pomocou regulárneho výrazu je použitie funkcie „alebo“. Toto je znak, ktorý môžete umiestniť medzi dve slová/znaky a povedať: „Priraď toto alebo toto“.

Napríklad, ak chcem v texte vyhľadať slovo „v poriadku“ a „v poriadku“, použil by som | charakter. Ako:

Dobre | dobre

Ak máte problém nájsť | charakter, podržte posun stlačte tlačidlo nadol a stlačte \ kľúč. Je to nad vrátiť na väčšine klávesníc.

Pridanie variabilných komponentov do vyhľadávaní podľa regulárnych výrazov

Dobre, takže teraz, keď viete, aký je neutrálny regulárny výraz, je čas vybrať si svoj prvý špeciálny znak. To by boli hranaté zátvorky, čo sú tieto veci [].

Čokoľvek vložíte do týchto zátvoriek, sa bude považovať za premennú zložku vášho vyhľadávania regulárnych výrazov. Do hranatých zátvoriek môžete vložiť ľubovoľný počet znakov, no na zápas bude platný iba jeden.

Dobre, znie to trochu komplikovane, ale nie je! Takto to vyzerá v praxi:

  • [A] Dobre sa bude len zhodovať so slovom „V poriadku“. Akési nezmyselné.
  • [AB]Dobre sa bude zhodovať s „V poriadku“ aj „Blright“.
  • Dobre[iouxyz]ght sa bude zhodovať s „V poriadku“, „V poriadku“, „V poriadku“, „V poriadku“ atď.

Môžete kombinovať znaky v zátvorkách, ako aj použiť viacero zátvoriek v rovnakom riadku regulárneho výrazu. [AB]r[i1]gh[tuvwxyz] je platná časť regulárneho výrazu. Dúfajme však, že to nevyzerá tak chaoticky, ako to mohlo vyzerať pred pár minútami!

Rozsahy môžu rozšíriť vaše vyhľadávanie

Ďalší kúsok regulárneho výrazu, ktorý bude užitočný so skratkami, je rozsah. Rozsahy vám umožňujú určiť rozsah znakov, ktoré budete akceptovať.

V predchádzajúcej časti ste si možno všimli, že moje zátvorky obsahovali veľa po sebe idúcich písmen. Najdlhšia bola [tuvwxyz]. Tieto písmená sa zobrazujú v abecede v rovnakom poradí, hneď vedľa seba.

To znamená, že namiesto vypisovania by som mohol použiť rozsah. Vyzeralo by to takto:

v poriadku[t-z]

Tento kúsok regulárneho kódu bude robiť to isté ako v poriadku[tuvwxyz]. Je to len prehľadnejšie a jednoduchšie na písanie.

Môžete nahradiť ten istý rozsah [a-z] ak chcete, aby akceptoval akékoľvek malé písmeno z abecedy. Alebo by ste mohli použiť [0-9] ak chcete akceptovať jednociferné číslo.

Môžete tiež kombinovať rozsahy v rámci rovnakej zátvorky. Napríklad toto Dobre[i-ux-z]ght bude akceptovať „V poriadku“, „V poriadku“, „V poriadku“ a „V poriadku“, ale nebude akceptovať „V poriadku“ alebo „V poriadku“.

Existujú aj iné variácie slova „V poriadku“, ktoré tento kód mimochodom akceptuje, a mnoho ďalších, ktoré nie. To je len krátky výber, aby veci zostali krátke.

Ak máte problém pochopiť, čo [i-ux-z] znamená, že by mohlo pomôcť vidieť to napísané takto:

[i-u, x-z]

Toto nie je správna syntax regulárneho výrazu – na oddelenie rozsahov by ste nemali používať čiarku. Ale dúfajme, že to pomôže dať väčší zmysel!

Na oddelenie rozsahov nepotrebujete čiarky v regulárnom výraze a nemusíte dávať rozsahy tesne vedľa seba. Mohli by ste to zmeniť na [i-uabcx-z]. To by akceptovalo rovnaké rozsahy ako predtým plus znaky „a“, „b“ a „c“.

Ako vylúčiť slová a znaky z vyhľadávania regulárnych výrazov pomocou skratiek

Dobre, takže teraz sa niekam dostávame! Ak ste postupovali podľa tohto článku až do tohto bodu, mali by ste byť schopní pozrieť sa na kód uvedený nižšie a pochopiť, na čo sa zhoduje:

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

Ak to dokážete prečítať, potom viete, že kus kódu regulárneho výrazu obsahuje veľa možných variácií slova „AppleToolBox“. Čo keby sme teda chceli znížiť počet variácií, ktoré akceptuje, bez toho, aby sme zmenili náš sortiment?

Tu prichádza na scénu znak „nie“. Vyzerá to takto: ^. Ak máte problém to nájsť na klávesnici (ako ja), počkajte posun a stlačte tlačidlo 6 kláves na klávesnici.

Ak chcete použiť ^ znak, umiestnite ho na začiatok znaku, ktorý chcete vylúčiť.

Je v tom háčik! The ^ znak nefunguje mimo funkcie regulárneho výrazu. Nemôžete ho jednoducho umiestniť pred písmeno „A“, aby ste toto písmeno vylúčili z vyhľadávania. Kód regulárneho výrazu ^A bude len hľadať veľké „A“.

Namiesto toho ho skombinujte so zátvorkami a inými špeciálnymi znakmi regulárneho výrazu.

Napríklad, ak by som chcel vyhľadať akúkoľvek inštanciu slova „V poriadku“, ktorá nezačína písmenom „A“, použil by som kód [^A]Dobre.

Môžete ho dokonca kombinovať s radmi! Stačí ho umiestniť na začiatok vašej zátvorky a všetko v tejto zátvorke, vrátane rozsahov, bude vylúčené z vášho vyhľadávania. Ako:

Čo ak chcete z vyhľadávania vylúčiť konkrétne slovo?

Túto informáciu som len ťažko hľadal. Používateľ Stack Overflow však mal riešenie a vyzerá takto:

^(?!(slovo)$).+$

Stačí vymeniť slovo s ľubovoľným slovom, ktoré chcete vylúčiť z vyhľadávania. Ako:

Môžete si prečítať príspevok Stack Overflow tu ak sa chcete dozvedieť viac o tomto konkrétnom prípade použitia.

Zástupné znaky vám môžu poskytnúť viac možností vyhľadávania

To nás privádza k zástupným znakom. Zástupný znak, ktorým je bodka ., sa používa na reprezentáciu akéhokoľvek jednotlivého znaku, bar žiadny. Ak len napíšete . ako váš regex kód so skratkami, vráti každý jeden znak v tele textu ako samostatnú zhodu.

Neodporúčam ho používať na tento účel, samozrejme! Namiesto toho ho odporúčam použiť namiesto jedného znaku v slove. Napríklad, Dobre sa bude zhodovať s „V poriadku“, „Alrxght“, „Alr

A to je skoro všetko! Zástupný znak je celkom ľahko pochopiteľný. Hodí sa ku všetkému! Vďaka tomu je užitočné nájsť reťazce, ktoré zodpovedajú špecifickému formátu a zároveň majú jedinečné znaky.

Napríklad e-maily budú vyzerať dosť podobne, bez toho, aby boli rovnaké. Zástupný znak vám môže pomôcť skombinovať prvky, o ktorých viete, že tam budú (napríklad „.com“ a „@“), so znakmi, ktoré nepoznáte (napríklad „my_email567“, iCloud alebo „Gmail“).

Ďalším zaujímavým prípadom použitia je použitie . znak na nájdenie reťazcov špecifickej dĺžky.

Napríklad, ak chcem nájsť každý štvormiestny reťazec v tele textu, mohol by som použiť ... s medzerou na oboch stranách.

A tu sú všetky sedemznakové reťazce v tom istom texte:

Upozorňujeme, že toto nie je dokonalá metóda na nájdenie reťazcov určitej dĺžky. Ako môžete vidieť vo vyššie uvedených príkladoch, niektoré reťazce sa zhodujú, čo by nemalo byť, a niektoré, ktoré by mali byť, boli ignorované. Je len zaujímavé si uvedomiť, že môžete použiť . znak na počítanie znakov.

Majte tiež na pamäti, že . je špeciálny znak v regulárnom výraze. To znamená, že budete musieť pridať a \ pred ním, ak chcete hľadať obdobia. To znamená, že budete musieť použiť Dobre\. aby sa zhodovalo s výrazom „V poriadku“.

Použite kvantifikátory na určenie dĺžky textu, ktorý hľadáte

Dobre, takže môžete technicky použiť . znak na nájdenie reťazca, ktorý zaberá určitý počet znakov. Väčšinu času však budete chcieť byť konkrétnejší.

Tu prichádzajú na rad kvantifikátory. Kvantifikátory vám umožňujú určiť dĺžku reťazca, ktorý hľadáte pri používaní regulárneho výrazu so skratkami.

Povedzme napríklad, že chcete nájsť akékoľvek slovo, ktoré má konkrétne tri písmená. Ak to chcete špecifikovať, budete chcieť použiť tieto zátvorky:

{}

Keď umiestnite tieto zátvorky za tieto [] zátvorky, určujete, že chcete reťazec, ktorý sa zhoduje s počtom znakov v tomto reťazci {} a rozsah znakov špecifikovaný v tomto [].

Som si istý, že to teraz nedáva veľký zmysel, takže sa pozrime na príklad!

Povedzme, že chcete nájsť roky uvedené v texte. Keďže rok pozostáva zo štyroch čísel (samozrejme nie každý rok odjakživa, len ma tu sledujte), môžete tento kód použiť na priradenie rokov v tomto texte:

[0-9]{4}

Tento kód hovorí, že chceme reťazec zložený zo znakov od 0 do 9, ktorý má konkrétne štyri znaky. Ako nájde tento konkrétny reťazec, môžete vidieť na nasledujúcej snímke obrazovky:

Mal by som poznamenať, že s týmto kódom regulárneho výrazu sú nejaké problémy, a to, že nezohľadňuje medzery ani interpunkciu. Ak teda kód nájde číslo dlhšie ako štyri znaky, napríklad „12345678“, nájde reťazec „1234“ a reťazec „5678“.

Na vyriešenie tohto problému by ste chceli pridať medzeru na začiatok kódu a zátvorku za {4} ktorý obsahuje ďalšiu medzeru, bodku, otáznik, čiarku a výkričník. Týmto spôsobom prehliadne dlhé reťazce čísel bez chýbajúcich reťazcov čísel, ktoré majú na konci namiesto medzery interpunkciu.

Môžete tiež použiť kvantifikátory na zadanie viac ako jednej dĺžky reťazca. Napríklad, možno chcem nájsť reťazec dlhý štyri znaky, ale aj sedem a jedenásť. Takto by to vyzeralo:

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

Existuje niekoľko ďalších kvantifikátorov, o ktorých by ste chceli vedieť

Ok, takže stále existuje viac kvantifikátorov! Týchto niekoľko posledných kvantifikátorov je pre prípad, keď chcete zadať dĺžku reťazca bez toho, aby ste boli príliš špecifický.

Povedzme napríklad, že chcete nájsť reťazec ľubovoľnej dĺžky, ktorému sa môže zhodovať regulárny výraz. Ako meno! Mená (v západných krajinách) začínajú jedným veľkým písmenom a končia náhodným množstvom malých písmen, za ktorými nasleduje medzera. Ak chcete nájsť meno, napíšte nasledujúci kód:

[A-Z][a-z]*

[A-Z] určuje, že prvým znakom reťazca by malo byť veľké písmeno. [a-z]* určuje, že zvyšok reťazca by mal pozostávať z malých písmen, ale nezáleží na tom, koľko písmen nasleduje. A medzera na konci znamená, že zápas ukončí, keď nájde medzeru na konci malých písmen.

Zlaté kombo v regulárnom výraze je .*. To znamená, že sa nekonečne zhoduje s ľubovoľným znakom. Inými slovami, bude zodpovedať celému textu ako jednej položke.

Ďalší kvantifikátor, ktorý potrebujete vedieť, je +. Tento je presne taký * okrem toho, že sa nebude zhodovať s reťazcom s nula znakmi. * bude zodpovedať ľubovoľnej dĺžke reťazca, vrátane reťazcov, ktoré nemajú žiadnu dĺžku. +, na druhej strane potrebuje reťazec s aspoň jedným alebo viacerými znakmi.

Nakoniec je tu ? kvantifikátor. Toto je zvláštne. Špecifikuje, že reťazec má buď nula znakov, alebo jeden znak. To je všetko – buď nič, alebo len jeden. Ak teda použijete kód [a-z]? s medzerou na začiatku a na konci, bude hľadať jednotlivé písmená v rámci textu.

Vyhľadajte znaky na začiatku a na konci reťazca textu

Blížime sa ku koncu nášho sprievodcu používaním regulárneho výrazu so skratkami! So skratkami budete používať iba dva ďalšie druhy regulárneho kódu.

Prvým sú znaky, ktoré vám umožňujú priraďovať reťazce podľa toho, ako začínajú a/alebo končia.

Ak nie je v zátvorkách, ^ rola postavy sa mení z významu „vylúčiť“ na „začína“. Špecifikuje, že reťazec by mal začínať čímkoľvek chcete. Napríklad, ak píšete ^A, ktoré by sa zhodovalo s písmenom „A“ v reťazcoch „V poriadku“, „Apple“ a „A“.

Nezodpovedá však celému slovu. Na to by ste ho museli zmeniť na ^A[A-Za-z]*. To sa bude zhodovať s prvým slovom odseku/reťazca, pokiaľ toto slovo začína veľkým „A“.

Ako vedľajšiu poznámku môžete napísať [A-Za-z] ako [A-z]. Znamená to to isté, len som zistil, že to prvé je o niečo jasnejšie, keď sa učíte.

Ak chcete určiť koniec reťazca, budete chcieť použiť $ charakter. Funguje rovnako ako ^ charakter. Jediný rozdiel je, že to napíšete na koniec zátvorky/reťazca, nie na začiatok.

Napríklad, ak by ste chceli nájsť reťazce/odstavce, ktoré končia na „le“, použili by ste kód [A-z]*le$. To sa bude zhodovať s „tabuľkou“, „jablkom“ a „schopným“, pokiaľ sú na konci reťazca alebo odseku.

Regex dokonca zamietne túto zhodu, ak je na konci reťazca medzera alebo interpunkčné znamienko. "Stôl." nebude zodpovedať tomuto kódu.

Ak to chcete vyriešiť, môžete použiť interpunkciu. Tento kód počíta s rôznymi formami interpunkcie a medzier, ktoré sa môžu vyskytnúť na konci reťazca, vrátane interpunkčného znamienka, za ktorým nasleduje medzera:

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

Tento kód sa bude zhodovať s „Able“, „table“, „stable“ a „capable? “.

Uložte textové reťazce pomocou funkcie zoskupovania regulárneho výrazu so skratkami

Dobre! Dostali ste sa na koniec nášho sprievodcu AppleToolBox o používaní regulárneho výrazu so skratkami. Zostáva len jedna ďalšia funkcia regulárneho výrazu, ktorú sa treba naučiť, a to je zoskupovanie.

Zoskupovanie je pravdepodobne najdôležitejšou vlastnosťou regulárneho výrazu, pretože vám umožňuje robiť veci s kódom regulárneho výrazu, ktorý napíšete. Bez neho je regulárny výraz len funkciou vyhľadávania. Môže vám povedať iba to, či reťazec existuje vo väčšom texte, t. j. vráti hodnotu „true“ alebo „false“.

Pomocou zoskupovania však môžete uložiť výsledky svojho regulárneho kódu. A to znamená, že môžete kopírovať zhody, ukladať ich do premenných, nahrádzať ich iným textom, upravovať ich formátovanie a všetko ostatné, čo by ste chceli robiť s regulárnym výrazom.

Našťastie je zoskupovanie super jednoduché! Všetko, čo chcete zoskupiť, vložte do zátvoriek (). Všetko, čo vložíte do zátvoriek, sa bude považovať za skupinu.

Ak vložíte celý riadok regulárneho kódu do zátvoriek, napr (.*@.*\..{3}), potom sa táto skupina zapamätá podľa vášho kódu, čo umožní jej neskoršie vyvolanie.

Je dôležité, aby ste skupiny používali iba vtedy, keď to potrebujete. Keďže sú uložené v pamäti, môžu spôsobiť zníženie výkonu vášho kódu. Uložte si skupiny, keď budú potrebné!

Skupiny môžete použiť aj na organizáciu

Skupiny môžete použiť aj na usporiadanie kódu regulárneho výrazu pomocou skratiek. Keď to urobíte, skupina v zátvorkách sa nemusí nevyhnutne zapamätať.

Povedzme napríklad, že chcem nájsť zhodu so slovom „Ahoj“, až na to, že mi je jedno, aké je posledné písmeno. Môže to byť akékoľvek malé alebo veľké písmeno alebo dokonca číslo. „Hell3838djdjajaksks“ a „Ahoj“ by sa mali počítať ako zhody. „Peklo“ by sa na druhej strane nemalo počítať.

Aby to fungovalo, napíšem kód Peklo[A-z]|[0-9]+. Ale toto je výsledok, ktorý dostávam:

Dôvod, prečo nezodpovedá tomu, ako som očakával, je ten + sa aplikuje len na [0-9] držiak. Potrebujem, aby to platilo pre obe zátvorky.

Tento kód navyše hovorí, že chcem jedno aj druhé peklo[A-z]alebo[0-9]. Takže hľadá slová, ktoré začínajú „Peklo“ a končia písmenom, alebo hľadá ľubovoľné reťazce čísel. V skutočnosti potrebujem, aby sa zhodoval s prípadmi slova „Peklo“, ktoré končia písmenom alebo číslom.

Aby som to vyriešil, môžem použiť skupinu a prepísať kód ako Peklo([A-z]|[0-9])+. Teraz hľadá slovo „Peklo“, za ktorým nasleduje akékoľvek písmeno alebo číslo. A pretože + sa vzťahuje na obe zátvorky, môže to byť ľubovoľná kombinácia písmen a číslic, pokiaľ je prítomné aspoň jedno písmeno alebo číslo.

Ako môžete vidieť na snímke obrazovky nižšie, táto skupina rieši môj problém bez toho, aby nutne ukladala informácie v rámci tejto skupiny:

Teraz čo?

A je to! To je takmer všetko, čo by ste kedy chceli vedieť o používaní regulárneho výrazu so skratkami. Dúfajme, že sa cítite dostatočne sebavedomí na to, aby ste teraz začali experimentovať s regulárnym výrazom, aj keď vám to spočiatku nedávalo zmysel.

Teraz, keď poznáte základy regulárneho výrazu, ste pripravení začať ho používať vo svojich skratkách! Skratky akceptujú vstup regulárneho výrazu v nasledujúcich akciách:

  • Zhoda textu
  • Nahradiť text

Pomocou týchto dvoch akcií skratiek môžete do svojich skratiek vložiť regulárny výraz.

Spárujte to s automatizačnými schopnosťami skratiek a máte k dispozícii celkom výkonný nástroj.

Regulárny výraz môžete použiť na uľahčenie formátovania textu v Skratkách, na získavanie informácií z e-mailov, textov, webových stránok, súbory a udalosti kalendára, vytvorte text v zadanom formáte, skontrolujte, či bol vstup zadaný správne a viac.

Povedzme napríklad, že chcete nájsť zhodu pre e-maily. Možno budete musieť skontrolovať, či reťazec textu je e-mail, alebo možno chcete vybrať e-mail (y) z tela textu.

Ako by ste to rozobrali?

Viete, že základnou štruktúrou e-mailu bude nejaká kombinácia písmen, čísel a znakov, po ktorých bude nasledovať symbol „@“, potom za ktorým nasleduje názov webovej stránky, ako je Gmail alebo iCloud, za ktorým nasleduje „.com“, „.org“ alebo nejaký iný druh trojznakovej najvyššej úrovne doména.

Ak to chcete zapísať do regulárneho výrazu, musíte zadať, že chcete reťazec s dĺžkou aspoň jedného znaku, ktorý bude bezprostredne nasledovať symbolom „@“, potom ďalším reťazcom s aspoň jedným znakom, za ktorým nasleduje znak „.“ a potom reťazcom troch postavy. Vyzeralo by to takto:

[e-mail chránený]+\..{3}

Ak to vložíte do Zhoda textu alebo Nahradiť text akcie v Skratkách, budete mať automatizáciu, ktorá dokáže nájsť, uložiť a manipulovať s e-mailovou adresou.

Tento druh riešenia problémov môžete použiť na vytvorenie vlastných riešení regulárnych výrazov alebo na nájdenie riešení, ktoré vytvorili iní online!

Začnite používať regulárny výraz so skratkami a posuňte svoju automatizáciu na ďalšiu úroveň

A tak, priatelia, je to naozaj tak. Dúfam, že sa vám páčilo sledovanie tohto článku! Toto je jeden z najambicióznejších diel, aké som kedy napísal pre AppleToolBox. Musel som sa naučiť regulárny výraz, aby som ho napísal, a dúfam, že som vám pri tom pomohol naučiť sa ho.

Používanie regulárneho výrazu so skratkami sa nelíši od toho, ako sa naučiť robiť čokoľvek iné na svojom smartfóne alebo počítači. Stačí venovať trochu času a trpezlivosti a nakoniec sa tam dostanete.

Ak chcete získať ďalšie príručky, návody a novinky o všetkom, čo sa týka spoločnosti Apple, pozrite si zvyšok blog AppleToolBox.

Dobre [A-Z][a-z]+, vidíme sa nabudúce!