A Regex használatának megkezdése a parancsikonokkal

Az elmúlt egy hónapban foglalkoztam a Shortcuts és az Automator alkalmazásokkal iOS és macOS rendszeren. Mindkettő az Apple ökoszisztéma automatizálása terén az erőművek, és az ősztől a macOS Monterey-től kezdve a Shortcuts lesz az automatizálási alkalmazás az összes Apple-eszközön. Ezért szerettem volna ezt a cikket egy nagyon fontos téma megvitatásával tölteni: A regex használata a Parancsikonok alkalmazással.

Bár van némi informatikai és programozási múltam, valahogy soha nem találkoztam a regexszel. Talán a név ijesztett meg, vagy talán a kód volt, amely a valaha látott legkevésbé olvasható kódok közé tartozik.

Bárhogy is legyen, úgy döntöttem, hogy tovább vizsgálom a regex-et, miután az elmúlt néhány hónapban bemutattam a Shortcuts alkalmazást. És amit felfedeztem, az az volt, hogy sok korlát, amibe a Shortcuts és az Automator kapcsán ütköztem, leküzdhető a regex segítségével.

Más szóval, nem arról volt szó, hogy ezekből az alkalmazásokból hiányoztak a funkciók, hanem arról, hogy hiányzott az oktatás.

Tehát a mai bejegyzésben te és én együtt tanuljuk meg a regex csínját-bínját. Így a legtöbbet hozhatja ki ezekből az alkalmazásokból.

Bemutatjuk a regex alapjait (kezdve azzal, hogy mi az), mit tehet vele a Parancsikonok alkalmazásban, néhány webhelyen és forrásokat használhat, ha nincs kedve saját maga megtanulni a regex-et, majd kitérünk a reguláris kifejezés alapvető fogalmaira és mechanikájára. nyelv.

Rendben, kezdjük!

Tartalom

  • Mik azok a reguláris kifejezések (azaz reguláris kifejezések)?
    • A regex segítségével megtehető dolgok
  • Hogyan használhatja a reguláris kifejezést a Parancsikonok alkalmazással?
  • Használja a regex101.com webhelyet a reguláris kifejezések teszteléséhez
  • Ha nem szeretné megtanulni a regex használatát a Parancsikonok alkalmazással, olvassa el ezt
  • Regex kezdőknek: Kezdje el használni a regex parancsikonokkal
    • Mik azok a regex ízek?
    • Weboldalak és hivatkozások, amelyek segítenek elkezdeni a reguláris kifejezést a parancsikonokkal
    • Az alapvető szöveges keresés végrehajtása a reguláris kifejezéssel a parancsikonokkal
    • Változó komponensek hozzáadása a reguláris kifejezésekhez
    • A tartományok szélesíthetik a keresést
    • Szavak és karakterek kizárása a reguláris kifejezésekből a parancsikonokkal
    • A helyettesítő karakterek több keresési lehetőséget kínálnak
    • Használjon kvantorokat a keresett szöveg hosszának megadásához
    • Van még néhány kvantor, amelyekről tudnia kell
    • Karakterek keresése a szövegsorozat elején és végén
    • Tárolja a szöveges karakterláncokat a reguláris kifejezés csoportosítási funkciójával a Parancsikonokkal
  • Most mi?
    • Hogyan bontaná ezt le?
  • Kezdje el a regex használatát a parancsikonokkal, hogy az automatizálást a következő szintre emelje
    • Kapcsolódó hozzászólások:

Mik azok a reguláris kifejezések (azaz reguláris kifejezések)?

A reguláris kifejezés vagy a „regex” egy kódrészlet, amellyel egy nagyobb szövegrészen belül kereshet szöveget.

Ha nem ismeri, egy másik szövegrészen belüli szövegrészt „karakterláncnak” nevezik a programozásban. Például a „zöld” szó a „Ma zöld nadrágot viseltem” szövegből álló karaktersorozat.

Másképpen fogalmazva, a regex egy módja annak, hogy megkeressük a szöveget egy nagyobb szövegrészben. És mivel a regex kódban van írva, használhatja meglehetősen összetett műveletek végrehajtására.

Például, ha az „e-mail” szóra szeretne keresni, egyszerűen írhat egy regex kódot, amely az e-mailre keres.

Ha azonban olyan e-mailt szeretne találni, amely egy bekezdésen belül van, és nem tudja pontosan, mi az, akkor keresnie kell egy e-mailhez hasonló formátumú szöveget. azaz egy karakterlánc, amely a „[e-mail védett]” formátumban.

Tegyük fel, hogy nem csak egy e-mailt szeretne megkeresni egy bekezdésből, hanem minden email. Talán gyorsan át szeretné másolni őket máshová, frissíteni egy új formátumra, vagy lecserélni őket úgy, hogy mindegyik azt mondja:[e-mail védett]“.

Ahogy egyre jártasabb és tapasztaltabb lesz a regex használatában, képes lesz mindezekre és még sok másra.

A regex segítségével megtehető dolgok

Rendben, szóval talán az imént említett e-mail-példák nem olyan praktikusak. Ne aggódjon – ez messze nem a határa annak, amit a Parancsikonok alkalmazással való regex használatával elérhet.

Általánosságban elmondható, hogy minden, amire a regex képes, a következő négy kategória valamelyikébe tartozik:

  1. Keressen egy karakterláncot egy nagyobb szövegrészben (vagyis keressen szót/karakterláncot/karakterlánctípust egy szövegoldalon).
  2. Győződjön meg arról, hogy a szöveg megfelel-e a kívánt formátumnak (vagyis ellenőrizze, hogy a szöveg nagybetűs/rendezett/pontosan van-e írva).
  3. Szöveg cseréje vagy beszúrása egy szövegrész meghatározott területére.
  4. Osszon fel egy szövegláncot a megadott pontokon (például osszon fel egy szövegrészt minden alkalommal, amikor vessző van).

Az ilyen típusú függvényekkel való interakcióhoz használható mélység és azok kombinálása a regex-et hihetetlenül hatékony eszközzé teszi a szöveg elemzéséhez és kezeléséhez.

Hogyan használhatja a reguláris kifejezést a Parancsikonok alkalmazással?

Rendben, remélhetőleg most már van egy alapötlete a regex használatáról. Ez egy olyan kódtípus, amellyel szöveget kereshet, még akkor is, ha nem tudja pontosan, mi ez a szöveg.

Tehát hogyan segít ez a parancsikonokban? Hasonlóan ahhoz, hogy parancsfájlokat adjon hozzá a parancsikonokhoz, ez egy út az alapvető automatizálástól (Írjon nekem, amikor kinyílik a bejárati ajtó) a speciális beállításokhoz (Automatikusan hozzon létre egy naptári eseményt az értekezleteimhez minden alkalommal, amikor e-mailt kapok egy Zoom-megbeszélésről a munkahelyemről).

Használhatja a regex parancsikonokat a bevitel helyességének ellenőrzésére. Például, ha olyan parancsikont hoz létre, amely csak URL-ekkel működik, a parancsikon elején használhatja a regex-et, hogy megbizonyosodjon arról, hogy a felhasználó az automatizálást egy URL-en futtatja.

Kombinálhatja a regex-et szkriptekkel, hogy hatékony parancsikonokat hozzon létre. Például, ezt a parancsikont reguláris kifejezést és szkriptet használ, hogy a vonalkódot kedvenc boltja URL-jévé alakítsa.

Ha Mac rendszeren használja a Parancsikonok alkalmazást (2021 őszén), a regex segítségével kötegelt műveleteket hajthat végre egy szövegrészen. Például másolhatja az összes e-mailt egy kiválasztott szövegben rendezett listaként. Vagy lecserélheti a dokumentumban szereplő összes nevet „*” karakterekre az adatvédelem érdekében.

Akár egy szövegtörzset is másolhat az egyik alkalmazásból, újraformázhatja, hogy megfeleljen egy másik alkalmazás preferenciáinak, majd beillesztheti a másik alkalmazásba, mindezt egyetlen jobb gombbal kattintva.

Más szóval, a regex teljes irányítást biztosít a szövegkezelés felett a Parancsikonok alkalmazással. Lehet, hogy ez elsőre nem hangzik túl hasznosnak, de most, hogy már tudja, hogy létezik, biztosan észre fogja venni, hány parancsikont lehetne javítani ezzel a funkcióval. És azt is észre fogja venni, hogy sok parancsikon nem is lehetséges regex nélkül.

Használja a regex101.com webhelyet a reguláris kifejezések teszteléséhez

Miután elkezdi használni a reguláris kifejezést a parancsikonokkal, csalódottságba ütközik:

Nagyon nehéz tesztelni a regex kódot. És ez nem csak a regexre jellemző. A Parancsikonok alkalmazással bármit tesztelni fájdalmas. Ennek egyetlen módja a parancsikon futtatása. Ez a módszer nem rossz, ha csak a beépített parancsikonokat teszteli.

De a kód teszteléséhez ez nem teszi lehetővé a soronkénti ellenőrzést, és nem ad sok visszajelzést.

Ehhez javaslom a regex101.com használatát. Ez egy olyan webhely, amelybe valós időben írhat be regex kódot. Szöveget is beírhat egy szövegszerkesztőbe ugyanazon a weboldalon. Mindegyik beírása közben látni fogja, hogy a reguláris kifejezés működik-e, miért működik vagy nem, és információkat kaphat a talált egyezésekről.

A regex101.com más ízű regex-et használ, mint a Shortcuts által támogatott (erről egy percben bővebben), de elég közel van ahhoz, hogy ne ütközzön túl sok problémába.

Ennek az eszköznek a használata nagyszerű, mert először odaírhatja a regex-et, majd bemásolhatja a Parancsikonok alkalmazásba, ha az megfelelően működik.

Ha nem szeretné megtanulni a regex használatát a Parancsikonok alkalmazással, olvassa el ezt

Értem – nem mindenki akarja majd megtanulni, hogyan kell használni a regex parancsikonokkal. Ez egy készség, és ez azt jelenti, hogy időre és gyakorlásra lesz szüksége. Ez közel sem olyan egyszerű, mint a Parancsikonok alkalmazás többi húzási funkciója.

Semmi gond! Bár Ön nem tud annyit kihozni a Shortcuts alkalmazásból, mint aki időt szán a regex megtanulására, továbbra is vannak lehetőségek az Ön számára. Nevezetesen, vannak online webhelyek és oldalak, ahol az emberek listát hoztak létre a regex kódok harapásairól, amelyeket kimásolhat és beilleszthet a Parancsikonok alkalmazásba.

Íme néhány link, amelyeket érdemes megnézni, ha nem akarod megtanulni a reguláris kifejezést:

  • 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

Csak olvassa el ezeket a hivatkozásokat, és találhat általános szabályos megoldásokat a kívánt parancsikonokhoz. Ez nem lesz oktatásmentes lehetőség, mivel még kell egy kis idő, hogy rájöjjön, mit néz. De ez sokkal egyszerűbb és ideális megoldás azoknak, akiknek nincs ideje beletenni a regexbe.

Ennek ellenére el kell ismernem, hogy a regex megtanulása nem túl nehéz, különösen, ha van némi tapasztalata a shell kóddal vagy a kezdő programozással kapcsolatban. A Regex eleinte halandzsának tűnt, de egy órányi cikkek olvasása és a regex101.com webhelyen való játék után elkezdhettem regexet írni a parancsikonjaimhoz.

Ez csak egy ismerős dolog – ha elég sokáig nézed, többé nem tűnik olyan furcsának. Szóval, ha van időd, és csak megijedsz, ne bánkódj!

Regex kezdőknek: Kezdje el használni a regex parancsikonokkal

Rendben, elég az előszó! Legyen fogalma arról, hogy mi az a regex, mire képes, miért érdemes megtanulnia, és elegendő információval kell rendelkeznie ahhoz, hogy eldöntse, meg akarja-e tanulni. Most pedig rátérünk a lényegre.

Az alábbiakban sok tartalom található, de ne aggódj! Ez a cikk inkább egy tanulmányi útmutató lesz. Azt javaslom, hogy lapozzon át minden szakaszt, hogy képet kapjon a regex által használt mechanikáról. Ez abban is segíteni fog, hogy a fejét is köré tekerje, ha még mindig nem érti, mi az a regex.

Miután átfutotta a dolgokat, azt javaslom, hogy nyissa meg a regex101.com webhelyet, és játsszon az alábbi szakaszokban található eszközök mindegyikével. Ez segít meglátni, hogyan néznek ki a fogalmak a gyakorlatban, valamint javítja a memóriáját. Miután ezt megtette, ezt a cikket tekintheti referenciapontnak – amihez visszatérhet, ha elfelejti a regex apróságait.

Ok menjünk!

Mik azok a regex ízek?

Először is megnézzük a regex ízeket. Ne aggódjon – ez nem befolyásolja a reguláris kifejezések mindennapi használatát a parancsikonokkal. Ez egy olyan dolog, amivel tisztában kell lennie, mielőtt elkezdi.

A regexnek különböző változatai vannak, amelyeket „ízeknek” neveznek. Ezek a különböző verziók továbbra is nagyon hasonlóak. Ha meg tud tanulni írni és olvasni egy ízt, akkor el kell tudnia olvasni bármelyiket. Csak kis különbségek lesznek a regex kód formázásában.

A programozásban ezeket a formázási sajátosságokat „szintaxisnak” nevezik. Csak így kell megírnia a kódot, hogy a kódot megértse az alkalmazás, amelybe éppen írja.

Íme, miért számít a szintaxis

"Szia barátom, hogy telik a napod?"

", megy barátom? a szia napod, hogyan”

Mindkét mondatban ugyanazok a szavak, karakterek és szóközök vannak. Ennek ellenére csak az egyiknek van értelme, és ez azért van, mert a hagyományos szintaxist követi.

A kódolás során az egyik programozási nyelv megértheti az első verziót, de a másodikat nem. Egy másik programozási nyelv számára azonban a második teljesen értelmes lehet, míg az első halandzsának tűnik. Aki viszont tud angolul, az valószínűleg megérti mindkét sor szándékát, még akkor is, ha az embernek egy kicsit dolgoznia kell, hogy megértse a jelentését.

Ilyenek (valahogy) a regex különböző ízei. Mindannyian egy kicsit másképp néznek ki, és egy kicsit hasonlítanak rád. De a használt alkalmazásnak megfelelő ízt kell használnia, különben az alkalmazásnak fogalma sem lesz arról, amit írt.

A Shortcuts alkalmazás megérti a regex ICU ízét, tehát ezt az ízt szeretné használni. A regex101.com webhelyen néhány különböző íz található, amelyek közül választhat az oldal bal oldalán. Azonban PCRE-t használ, ami nagyon hasonlít az ICU-hoz.

Fontos tudni, hogy a regexnek különböző ízei vannak, mert az interneten kétségtelenül különböző ízekkel találkozhat. Ha talál egy kis regex-et, amit el szeretne lopni, de nem tudja működésre bírni a Shortcuts-szal, vagy egyszerűen nem néz ki jól, nézze meg, milyen ízben van ráírva!

Weboldalak és hivatkozások, amelyek segítenek elkezdeni a reguláris kifejezést a parancsikonokkal

Egy másik dolog, amit szeretnék kitérni, mielőtt elkezdjük feltárni a regex írásának tényleges mechanikáját, az erőforrások. Semmi esetre sem állítom, hogy ez a bejegyzés kimerítő forrás a regex tanulásához. Ez csak hasznos kiindulópont azoknak, akik a reguláris kifejezést a parancsikonokkal szeretnék használni.

Ha mélyebben szeretne elmerülni a regexben, vagy úgy érzi, hogy ez a cikk nem nyújtja a szükséges segítséget, tekintse meg az alábbi cikkeket, útmutatókat és eszközöket:

  • https://regex101.com – Egy webhely, amely lehetővé teszi a regex kód valós időben történő tesztelését.
  • https://www.shortcutfoo.com/app/dojos/regex/cheatsheet – Csalólap arra az esetre, ha elfelejted, mit csinálnak az egyes karakterek
  • http://www.rexegg.com – Ez a webhely egy átfogó forrás, amelyben mindent megtudhat, amit a regexről tudnia kell. Nézze meg ezt, ha jártas akar lenni a regex használatában.
  • https://scottwillsey.com/blog/ios/regex1/ – Ez egy négyrészes blogsorozat a reguláris kifejezés használatáról parancsikonokkal. Nagyon eltérő megközelítést alkalmazok ettől az útmutatótól, ezért jó kísérősorozat lesz a cikkhez.
  • A Stack Overflow és a Reddit egyaránt jó webhely a reguláris kifejezésekkel kapcsolatos kérdések megosztására, valamint a tanácsok és válaszok megszerzésére.

Ezek az erőforrások eltérnek a dokumentumban felsoroltaktól Ha nem szeretné megtanulni a regex használatát a Parancsikonok alkalmazással szakaszban, mivel ezek mindegyikéhez el kell kezdenie a regex tanulását. Ezek átfogóbbak, míg a többi csak referenciapont.

Az alapvető szöveges keresés végrehajtása a reguláris kifejezéssel a parancsikonokkal

Rendben! Most eljutottunk arra a pontra, amire mindenki várt: Meg fogjuk tanulni a regex és a parancsikonok használatának alapjait.

Kezdjük egy egyszerű kereséssel, mivel ez a legegyszerűbb dolog, amit a regexszel megtehetsz. Ahogy korábban említettük, azt javaslom, hogy a regex101.com webhelyet egy másik lapon nyissa meg, hogy követni tudja.

A legalapvetőbb esetben a regex a (vagy mérkőzés) bármit is írsz bele. Például ha gépelnék Rendben Regex kódomként az „Rendben” szó minden előfordulását megtalálja ebben az útmutatóban.

A kis- és nagybetűk, a szóközök és az írásjelek számítanak. Ez azt jelenti Rendben, rendben, Rendben!, és Rendben , mindegyik más-más eredményt fog produkálni.

És ez az! Valahányszor speciális karakterek használata nélkül ír be valamit a regex keresésbe, a regex mindenre megfelel, ami pontosan megegyezik a beírt szöveggel.

Egy fogás van! Egyes karakterek a billentyűzeten speciális reguláris karakterek is. Ez azt jelenti, hogy valamilyen funkciót hajtanak végre a regex kódban.

Az ? szimbólum az egyik ilyen karakter. A regex kódban kvantorként használják. Tehát ha megpróbál rákeresni a „Rendben?” gépeléssel Rendben? a reguláris kifejezés kódjaként nem fogod azt kapni, amit akarsz.

Ennek kijavításához meg kell adnia, hogy a "?" karakterláncként, nem speciális karakterként. Ehhez ehhez a karakterhez vagy bármely másikhoz egyszerűen adja hozzá a \ szimbólum közvetlenül a karakter előtt, amelynek speciális tulajdonságait érvényteleníteni szeretné.

Tehát ha a „Rendben?” a regex használatával a kód így fog kinézni:

Rendben\?

Ha nem biztos abban, hogy egy adott karaktert a regex speciális karakterként kezel, ellenőrizheti ezt a csalólapot a regex összes speciális karakteréhez.

Keressen egynél több szóra a „vagy” karakter használatával

A reguláris kifejezéssel végzett karakterláncok keresésének másik fontos összetevője a „vagy” függvény használata. Ez egy olyan karakter, amelyet két szó/karakter közé helyezhet, hogy kimondja: „Egyezze ezt vagy ezt”.

Például, ha a szövegben az „rendben” és „rendben” szavakra szeretnék keresni, akkor a | karakter. Például így:

Rendben|rendben

Ha nehezen találja meg a | karakter, tartsa a váltás gomb le és nyomja meg a gombot \ kulcs. A felett van Visszatérés gomb a legtöbb billentyűzeten.

Változó komponensek hozzáadása a reguláris kifejezésekhez

Rendben, most, hogy tudod, milyen a semleges regex, ideje felvenni az első különleges karakteredet. Ez lenne a szögletes zárójel, ami ezek a dolgok [].

Bármit is tesz ezekbe a zárójelekbe, az a regex keresés változó összetevőjének minősül. A zárójelekbe annyi karaktert tehet, amennyit csak akar, de meccsenként csak egy lesz érvényes.

Rendben, ez kicsit bonyolultan hangzik, de nem az! Így néz ki a gyakorlatban:

  • [Rendben csak egyezni fog az „Rendben” szóval. Kicsit értelmetlen.
  • [AB]rendben egyezik az „Rendben” és a „Blright” kifejezéssel.
  • Alr[iouxyz]ght egyezik az „Rendben”, „Alroght”, „Alrught”, „Alrxght” és így tovább.

A karaktereket zárójelben kombinálhatja, valamint több zárójelet is használhat ugyanabban a szabályos kifejezésben. [AB]r[i1]gh[tuvwxyz] egy érvényes reguláris kifejezés. Remélhetőleg azonban nem tűnik olyan kaotikusnak, mint néhány perce lehetett!

A tartományok szélesíthetik a keresést

A következő reguláris kifejezés, amely hasznos lesz a parancsikonokkal, a tartomány. A tartományok lehetővé teszik, hogy megadjon egy olyan karaktertartományt, amelyet elfogad.

Az előző részben talán észrevetted, hogy a zárójelemben sok egymást követő betű szerepel. A leghosszabb volt [tuvwxyz]. Ezek a betűk ugyanabban a sorrendben jelennek meg az ábécében, közvetlenül egymás mellett.

Ez azt jelenti, hogy használhatok egy tartományt ahelyett, hogy kiírnám őket. Ez így nézne ki:

Rendben [t-z]

Ez a regex kódrészlet ugyanazt teszi, mint Rendben[tuvwxyz]. Egyszerűbb és egyszerűbb írni.

Ugyanezt a tartományt lecserélheti erre [a-z] ha azt szeretné, hogy bármilyen kisbetűt elfogadjon az ábécéből. Vagy használhatod [0-9] ha bármilyen egyjegyű számot el akart fogadni.

Ugyanazon a zárójelen belül kombinálhatja a tartományokat is. Például ezt Alr[i-ux-z]ght elfogadja az „Rendben”, „Rendben”, „Rendben” és „Rendben”, de nem fogadja el az „Rendben” vagy „Rendben” szavakat.

A „Rendben” szónak egyébként vannak más változatai is, amelyeket ez a kód elfogad, és sok más változat is, amelyet nem. Ez csak egy rövid válogatás, hogy a dolgok rövidek legyenek.

Ha nehezen érti meg, mit [i-ux-z] azt jelenti, hogy segíthet, ha ezt így írják:

[i-u, x-z]

Ez nem helyes regex szintaxis – ne használjon vesszőt a tartományok elválasztására. De remélhetőleg ez segít értelmesebbé tenni!

Nincs szükség vesszőkre a szabályos kifejezésben a tartományok elválasztásához, és nem kell a tartományokat közvetlenül egymás mellé tenni. Megváltoztathatnád [i-uabcx-z]. Ez ugyanazokat a tartományokat fogadja el, mint korábban, plusz az „a”, „b” és „c” karaktereket.

Szavak és karakterek kizárása a reguláris kifejezésekből a parancsikonokkal

Oké, akkor most eljutunk valahova! Ha eddig a pontig követte ezt a cikket, meg kell tudnia nézni az alábbi kódot, és meg kell értenie, hogy minek felel meg:

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

Ha el tudja olvasni, akkor tudja, hogy a regex kód része benne van nagyon az „AppleToolBox” szó lehetséges változatairól. Tehát mi van, ha csökkenteni akarjuk az általa elfogadott változatok számát anélkül, hogy megváltoztatnánk a tartományunkat?

Itt jön be a „nem” karakter. Ez így néz ki: ^. Ha nehezen találja meg a billentyűzetén (mint én), tartsa lenyomva váltás és nyomja meg a gombot 6 gombot a billentyűzeten.

Használatához a ^ karaktert, helyezze a kizárni kívánt karakter elejére.

Van egy fogás! Az ^ karakter nem működik a regex függvényen kívül. Nem helyezheti csak az „A” betű elé, hogy kizárja azt a betűt a keresésből. A reguláris kifejezés kódja ^A csak a nagy „A” betűt keresi.

Ehelyett kombinálja zárójelekkel és más speciális regex karakterekkel.

Például, ha az „Rendben” szó bármely olyan előfordulására szeretnék rákeresni, amely nem „A” betűvel kezdődik, akkor a kódot használnám. [^A] Rendben.

Akár tartományokkal is kombinálhatod! Csak tegye a zárójel elejére, és a szögletes zárójelen belül minden, beleértve a tartományokat is, kizárásra kerül a keresésből. Például így:

Mi a teendő, ha egy adott szót ki szeretne zárni a keresésből?

Nehezen találtam meg ezt az információt. Egy Stack Overflow felhasználónak azonban megvolt a megoldása, és így néz ki:

^(?!(szó)$).+$

Csak cseréld ki szó bármilyen szóval, amelyet ki szeretne zárni a keresésből. Például így:

Elolvashatja azt a Stack Overflow bejegyzést itt ha többet szeretne megtudni erről a konkrét használati esetről.

A helyettesítő karakterek több keresési lehetőséget kínálnak

Ez elvezet minket a helyettesítő karakterekhez. A helyettesítő karakter, amely egy pont ., egyetlen karaktert jelöl, de egyiket sem. Ha csak beírod . a parancsikonokkal ellátott reguláris kódjaként a szöveg minden egyes karakterét egyedi egyezésként adja vissza.

Természetesen nem ajánlom erre a célra! Ehelyett azt javaslom, hogy egy szóban egyetlen karakter helyett használja. Például, Rendben egyezik: „Rendben”, „Alrxght”, „Alr

És nagyjából ennyi! A helyettesítő karakter meglehetősen könnyen érthető. Mindenhez passzol! Ez hasznossá teszi olyan karakterláncok megtalálását, amelyek megfelelnek egy adott formátumnak, miközben egyedi karakterekkel rendelkeznek.

Például az e-mailek mindegyike nagyon hasonlóan fog kinézni anélkül, hogy egyformák lennének. A helyettesítő karakter segítségével kombinálhatja azokat az elemeket, amelyekről tudja, hogy ott lesznek (például „.com” és „@”) olyan karakterekkel, amelyeket nem ismer (például „my_email567”, iCloud vagy „Gmail”).

Egy másik érdekes használati eset a . karaktert, hogy meghatározott hosszúságú karakterláncokat keressen.

Például, ha meg akarok találni minden négykarakteres karakterláncot egy szövegben, használhatom ... mindkét oldalán szóközzel.

És itt van az összes hét karakterből álló karakterlánc ugyanabban a szövegben:

Vegye figyelembe, hogy ez nem tökéletes módszer egy bizonyos hosszúságú karakterláncok megkeresésére. Amint az a fenti példákban látható, néhány karakterlánc illeszkedik, amelyeknek nem szabadna lennie, és néhányat figyelmen kívül kellett volna hagyni. Csak érdekes megjegyezni, hogy használhatja a . karakter a karakterek megszámlálásához.

Ezenkívül ne feledje, hogy a . egy speciális karakter a regexben. Ez azt jelenti, hogy hozzá kell adnia a \ előtte, ha időszakokat akarsz keresni. Ez azt jelenti, hogy használnia kell Rendben\. hogy megfeleljen az „Rendben” kifejezésnek.

Használjon kvantorokat a keresett szöveg hosszának megadásához

Rendben, így technikailag használhatja a . karaktert, hogy megtaláljon egy karakterláncot, amely meghatározott számú karaktert foglal el. Legtöbbször azonban szeretne pontosabb lenni.

Itt jönnek be a kvantorok. A kvantorok segítségével megadhatja a keresett karakterlánc hosszát, amikor a reguláris kifejezést parancsikonokkal használja.

Tegyük fel például, hogy meg szeretne találni egy olyan szót, amely kifejezetten három betűből áll. Ennek megadásához használja a következő zárójeleket:

{}

Amikor ezeket a zárójeleket ezek után helyezi el [] zárójelben, akkor megadja, hogy olyan karakterláncot szeretne, amely megfelel a benne lévő karakterek számának {} és az ebben meghatározott karaktertartományt [].

Biztos vagyok benne, hogy ennek most nincs sok értelme, úgyhogy nézzünk egy példát!

Tegyük fel, hogy meg akarja találni a szövegben említett évszámokat. Mivel egy év négy számból áll (nyilván nem minden évben minden időkből, csak kövessetek itt), használhatja ezt a kódot, hogy megfeleljen az évszámoknak ebben a szövegben:

[0-9]{4}

Ez a kód azt mondja, hogy egy 0-tól 9-ig terjedő karakterekből álló karakterláncot szeretnénk, amely kifejezetten négy karakter hosszú. A következő képernyőképen láthatja, hogyan találja meg ezt a karakterláncot:

Meg kell jegyeznem, hogy van néhány probléma ezzel a regex kóddal, és ez az, hogy nem veszi figyelembe a szóközöket vagy az írásjeleket. Tehát ha a kód négy karakternél hosszabb számot talál, például „12345678”, akkor az „1234” és az „5678” karakterláncot találja.

A probléma megoldásához szóközt kell hozzáadnia a kód elejéhez, és egy zárójelet a kód után {4} amely további szóközt, pontot, kérdőjelet, vesszőt és felkiáltójelet tartalmaz. Így figyelmen kívül hagyja a hosszú számsorokat anélkül, hogy hiányozna olyan számsor, amelynek végén szóköz helyett írásjel található.

Kvantifikátorokat is érdemes használni egynél több karakterlánc hosszának megadásához. Például lehet, hogy szeretnék találni egy négy karakter hosszúságú karakterláncot, de hét és tizenegy karaktert is. Íme, hogy nézne ki:

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

Van még néhány kvantor, amelyekről tudnia kell

Rendben, még mindig vannak számszerűsítők! Ez az utolsó néhány kvantor arra való, amikor meg szeretné adni egy karakterlánc hosszát anélkül, hogy túlságosan specifikus lenne.

Tegyük fel például, hogy egy tetszőleges hosszúságú karakterláncot szeretne találni, amelynek a regex megfelelhet. Mint egy név! A nevek (a nyugati országokban) egy nagybetűvel kezdődnek, és véletlenszerűen meghatározott számú kisbetűvel végződnek, amelyet szóköz követ. A név megtalálásához írja be a következő kódot:

[A-Z][a-z]*

[A-Z] meghatározza, hogy a karakterlánc első karakterének nagybetűnek kell lennie. [a-z]* meghatározza, hogy a karakterlánc többi részét kisbetűk alkotják, de nem számít, hány betű következik. A végén lévő szóköz pedig azt jelenti, hogy befejezi a mérkőzést, ha talál egy szóközt a kisbetűk végén.

A regex arany kombója .*. Ez azt jelenti, hogy a végtelenségig megfeleljen bármely karakternek. Más szavakkal, egy elemként illeszkedik a teljes szövegrészhez.

A következő kvantor, amit tudnia kell +. Ez pont olyan * kivéve, hogy nem fog megegyezni a nulla karakteres karakterlánccal. * bármely hosszúságú karakterlánchoz illeszkedik, beleértve a hosszúságú karakterláncokat is. +, viszont legalább egy vagy több karakterből álló karakterláncra van szüksége.

Végül ott van a ? kvantor. Ez egy furcsa. Meghatározza, hogy egy karakterlánc nulla karakterből vagy egy karakterből álljon. Ennyi – vagy semmi, vagy csak egy. Tehát ha a kódot használja [a-z]? szóközzel az elején és végén, akkor a szövegben egyetlen betűt keres.

Karakterek keresése a szövegsorozat elején és végén

A regex gyorsbillentyűkkel való használatáról szóló útmutatónk a végéhez közeledünk! Csak még kétféle regex kód használható a parancsikonokhoz.

Az első olyan karakter, amely lehetővé teszi a karakterláncok egyeztetését aszerint, hogy hogyan kezdődnek és/vagy hogyan végződnek.

Ha nincs zárójelben, a ^ a karakter szerepe „kizárás” jelentésről „kezdődik”-re változik. Meghatározza, hogy a karakterláncnak azzal kell kezdődnie, amit akar. Például ha írsz ^A, amely megegyezik az „A” betűvel az „Rendben”, „Apple” és „A” karakterláncokban.

Ez azonban nem egyezik az egész szóval. Ehhez módosítania kell ^A[A-Za-z]*. Ez megegyezik egy bekezdés/karakterlánc első szavával, mindaddig, amíg ez a szó nagy „A”-val kezdődik.

Mellékesen megírhatod [A-Za-z] mint [A-z]. Ez ugyanazt jelenti, csak azt tapasztalom, hogy az első egy kicsit világosabb, amikor tanulsz.

A karakterlánc végének megadásához használja a $ karakter. Ugyanúgy működik, mint a ^ karakter. Az egyetlen különbség az, hogy nem az elejére, hanem a zárójel/karakterlánc végére írod.

Például, ha olyan karakterláncokat/bekezdéseket szeretne találni, amelyek „le”-re végződnek, használja a kódot [A-z]*le$. Ez egyezni fog a „Táblázat”, az „alma” és a „képes” kifejezésekkel, mindaddig, amíg egy karakterlánc vagy bekezdés végén vannak.

A Regex még ezt az egyezést is megtagadja, ha szóköz vagy írásjel van a karakterlánc végén. "Asztal." nem egyezik meg ezzel a kóddal.

Ennek kijavításához vegye figyelembe az írásjeleket. Ez a kód figyelembe veszi az írásjelek és a szóközök különféle formáit, amelyek egy karakterlánc végén előfordulhatnak, beleértve az írásjelet, amelyet szóköz követ:

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

Ez a kód megfelel az „Able”, „table”, „stable” és „capable? “.

Tárolja a szöveges karakterláncokat a reguláris kifejezés csoportosítási funkciójával a Parancsikonokkal

Rendben! Elérkezett a reguláris kifejezés és a parancsikonok használatáról szóló AppleToolBox útmutatónk végére. Már csak egy regex függvényt kell megtanulni, ez pedig a csoportosítás.

A csoportosítás vitathatatlanul a regex legfontosabb jellemzője, mivel ez az, ami lehetővé teszi, hogy az Ön által írt regex kóddal dolgokat tegyen. Enélkül a regex csak egy keresési funkció. Csak akkor tudja megmondani, ha egy karakterlánc létezik egy nagyobb szövegrészen belül, azaz „igaz” vagy „hamis” értéket ad vissza.

A csoportosítással azonban tárolhatja a regex kód eredményeit. Ez pedig azt jelenti, hogy az egyezéseket másolhatja, változókban tárolhatja, más szöveggel helyettesítheti, módosíthatja a formázásukat, és minden mást, amit a reguláris kifejezéssel meg szeretne tenni.

Szerencsére a csoportosítás nagyon egyszerű! Csak tegye zárójelbe, amit szeretne csoportosítani (). Amit zárójelbe tesz, a rendszer csoportként kezeli.

Ha egy egész sort reguláris kódot teszel zárójelek közé, pl (.*@.*\..{3}), akkor a kód emlékezni fog arra a csoportra, amely lehetővé teszi a későbbi visszahívását.

Fontos, hogy csak akkor használjon csoportokat, amikor csak szükséges. Mivel a memóriában vannak tárolva, a kód teljesítménye csökkenhet. Mentse el a csoportokat, amikor szükség van rájuk!

A csoportokat a szervezéshez is használhatja

A parancsikonokkal csoportokat is használhat a regex kódjának rendszerezéséhez. Amikor ezt teszi, a zárójelben lévő csoport nem feltétlenül fog emlékezni.

Tegyük fel például, hogy a „Hello” szót akarom egyeztetni, kivéve, hogy nem érdekel, mi az utolsó betű. Lehet bármilyen kis- vagy nagybetű, vagy akár szám is. A „Hell3838djdjajaksks” és a „Hello” egyezésnek kell számítani. A „poklot” viszont nem szabad számolni.

Hogy ez működjön, megírom a kódot Pokol[A-z]|[0-9]+. De ez az eredmény, amit kapok:

Az az oka, hogy nem egyezik azzal, ahogy vártam, hogy a + csak a [0-9] zárójel. Mindkét zárójelre alkalmazni kell.

Ezenkívül ez a kód azt mondja, hogy én is akarom Pokol [A-z]vagy[0-9]. Tehát olyan szavakkal illik, amelyek „pokollal” kezdődnek és betűvel végződnek, vagy bármilyen számsort keres. Amire valójában szükségem van, az az, hogy megfeleljen a „Pokol” szó betűvel vagy számmal végződő példányainak.

Ennek kijavításához használhatok egy csoportot, és átírhatom a kódot, mint Pokol([A-z]|[0-9])+. Most a „Pokol” szót keresi, amelyet bármilyen betű vagy szám követ. És mivel a + mindkét zárójelre vonatkozik, bármilyen betű- és számkombináció lehet, feltéve, hogy legalább egy betű vagy szám szerepel.

Amint az alábbi képernyőképen látható, ez a csoport megoldja a problémámat anélkül, hogy szükségszerűen tárolná az információkat a csoporton belül:

Most mi?

És ez az! Ez szinte minden, amit a regex parancsikonokkal való használatáról tudni lehet. Remélhetőleg elég magabiztosnak érzed magad ahhoz, hogy most elkezdj kísérletezni a regexszel, még akkor is, ha eleinte ennek nem volt értelme.

Most, hogy ismeri a regex alapjait, készen áll a használatára a parancsikonokban! A parancsikonok a következő műveleteknél fogadják el a regex bevitelt:

  • Szöveg egyezése
  • Szöveg cseréje

Ezzel a két gyorsbillentyű-művelettel reguláris kifejezést illeszthet be a parancsikonokba.

Párosítsa ezt a Shortcuts automatizálási képességeivel, és egy elég hatékony eszköz áll a rendelkezésére.

A regex segítségével megkönnyítheti a szöveg formázását a Parancsikonokban, információkat gyűjthet e-mailekből, szövegekből, webhelyekről, fájlokat és naptári eseményeket, hozzon létre szöveget, amely meghatározott formátumot követ, ellenőrizze, hogy helyesen adta-e meg a bevitelt, és több.

Tegyük fel például, hogy e-maileket szeretne egyeztetni. Lehet, hogy ellenőriznie kell, hogy egy szöveglánc e-mail-e, vagy esetleg egy e-mailt szeretne előhívni egy szövegtörzsből.

Hogyan bontaná ezt le?

Nos, tudja, hogy az e-mailek alapvető szerkezete betűk, számok és karakterek kombinációja, amelyet a „@” szimbólum követ, majd ezt követi egy webhely, például a Gmail vagy az iCloud neve, amelyet egy „.com”, „.org” vagy valamilyen más három karakterből álló felső szintű cím követ. tartomány.

Ha ezt a szabályos kifejezésben szeretné megírni, meg kell adnia, hogy egy legalább egy karakter hosszúságú karakterláncot szeretne, amelyet azonnal követ a „@” szimbólummal, majd egy legalább egy karakterből álló karakterláncot, amelyet egy „.”, majd egy három karakterből álló karakterlánc követ karakterek. Ez így nézne ki:

[e-mail védett]+\..{3}

Ha ezt beilleszti a Szöveg egyezése vagy Szöveg cseréje műveleteket a Parancsikonokban, akkor egy olyan automatika lesz, amely képes megkeresni, tárolni és kezelni egy e-mail címet.

Ezt a fajta problémamegoldást használhatja saját regex megoldások kidolgozására, vagy mások által online készített megoldások megtalálására!

Kezdje el a regex használatát a parancsikonokkal, hogy az automatizálást a következő szintre emelje

És ez, barátaim, tényleg így van. Remélem, tetszett a cikk követése! Ez az egyik legambiciózusabb darab, amit valaha az AppleToolBox számára írtam. Meg kellett tanítanom magamnak a regex megírását, és remélem, hogy ezzel segíthettem megtanulni.

A regex használata a parancsikonokkal nem különbözik attól, hogy megtanulja, hogyan kell bármi mást tenni okostelefonján vagy számítógépén. Csak szánj rá egy kis időt és türelmet, és végül eljutsz oda.

Ha további útmutatókat, oktatóanyagokat és híreket szeretne az Apple-ről, tekintse meg a többi részt az AppleToolBox blog.

Rendben [A-Z][a-z]+, legközelebb találkozunk!