Gyors útmutató a reguláris kifejezésekhez

G Suite és Office 360 ​​esetén felhasználók és a Python fejlesztők számára

(Badi James) (2020. május 20.)

A nyelv ritkán kezelhető, ha betekintést nyerünk. Még az a feladat is, hogy megkeresje és megszámolja, hányszor jelenik meg egy szó egy szövegtestben, egy olyan feladat, amely első pillantásra úgy tűnik, hogy egyszerűnek kell lennie a modern szövegszerkesztőkkel és a kódoló könyvtárakkal, gyorsan komplikációkba ütközhet.

Vegyünk példát arra, hogy megpróbáljuk-e megtalálni, hogy az égbolt meg van-e említve egy szövegtestben. Az egyszerű megközelítés a következő:

  • Ctrl + F „sky” (szövegszerkesztő vagy szövegszerkesztő használata esetén)
  • „sky” a body\_of\_text fájlban (ha egy szkript a pythonban)

Mindkét megközelítés azonban nem mindig talál említést az égről, és néha hamis pozitív eredményeket hoz. E megközelítések korlátai abból adódnak, hogy miként keresik az s-k-y karakterek pontos sorozatát. Az alábbiakban felsoroljuk a nyelv néhány jellemzőjét, amelyek miatt ez a megközelítés kudarcot vall:

  • Nagybetűk: Ha egy mondat „Sky” -val kezdődik, vagy „Sky” jelenik meg a tulajdonnév részeként (vagy ha a a szöveg írójának eltört a nagybetűs billentyűje) a szó ilyen megjelenései nem találhatók meg.
  • Más szavak helyesírása: Olyan szavak jelenléte, mint a „pe sky ”,„ ri sky ”stb. Az „égboltot” hamisan kell észlelni.
  • Többes szám: Az „égboltot” nem észlelik.

Sok szövegszerkesztőnek és szövegszerkesztőnek vannak opciói a „Keresés és keresés” részben. Csere ”funkciók a fenti problémák első két kérdésének kezeléséhez. Valójában az olyan opciók, mint az „Ügy figyelmen kívül hagyása” és „Az egész szó egyeztetése” alapértelmezés szerint be vannak kapcsolva. A szó hiányzó alternatív formáinak (többes számok, igeidők, nem stb.) Vagy az alternatív helyesírások (például a Mohammad név sokféle változata) hiánya azonban továbbra is jelen lesz.

A Pythonnal kibővítheti a keresési\_mondat a body\_of\_text kódsorba feltételes hozzáadással a szó minden változatának lefedésére és a hamis pozitív egyezések kizárására. De ez fájdalmat okozhat, és hosszúvá és nehezen karbantarthatóvá teheti ennek az állítólag egyszerű feladatnak a kódját.

Írja be a reguláris kifejezéseket

A reguláris kifejezések (vagy röviden a regex kifejezések) hatékony eszközök a szövegen belüli karakterminták megtalálásához. Az ötlet az, hogy ahelyett, hogy a kódnak vagy a szövegszerkesztőnek egy adott karakterláncot találna, megad egy mintát (egy reguláris kifejezést), amely leírja azokat a szabályokat, amelyeket használni szeretne a szöveg egyes szegmenseinek kibővítésére vagy korlátozására. az adott mintát.

A szabályok megadását speciális karakterek hozzáadásával lehet elérni a reguláris kifejezéshez. Vegyük az „ég” fenti példáját. A „\ bsk (y | ies) \ b” reguláris kifejezés mind az „égbolt”, mind pedig az „égbolt” kifejezéssel megegyezik, de nem felel meg a „bosszantó”, a „kockázatos” vagy bármely más, s-k-y-t tartalmazó szóval. Bontjuk le az összes hozzáadott speciális karakter célját:

A kifejezésünk mindkét végét szegélyező„ \ b ”meghatározza a szóhatárokat, azaz a szóköz, az írásjelek, a szöveg kezdete vagy vége stb. Ez akadályozza a regexet abban, hogy más olyan szavak, amelyekben az „ég” a helyesírás részét képezi (például „bosszantó” vagy „Skype”).

A zárójelek létrehoznak egy rögzítési csoportot. Ez arra szolgál, hogy meghatározza, hogy a regex mely részeire kíván alkalmazni egy adott szabályt. Ezen az elfogási csoporton belül van az „|” (más néven a függőleges sáv). Ez OR operátorként működik, megadva, hogy a bal oldali („y”) vagy a jobb oldali („s”) kifejezés egyezmény részét képezheti. Ez lehetővé teszi a regexünknek, hogy mind az egyes számú „égbolt”, mind a többes számú „égbolt” kifejezésre illeszkedjen.

A nagybetűs írásmód kezeléséhez általában ez nem kérdés, mivel a keresés „Eset figyelmen kívül hagyása” opciója. a legtöbb szövegszerkesztőben és szövegszerkesztőben található funkciók a regex használatával is kereshetők. A Python regex könyvtár használatakor re, a e IGNORECASE zászló használható, ha regexen keresztül keresünk (erről bővebben később). Ennek az opciónak vagy ennek a zászlónak a nélkül azonban a „Sky”, „sky”, „Skies” és „skies” kifejezéseket össze tudjuk hangolni úgy, hogy a regexünket önmagában bővítjük: „\ b (S | s) k (y | ies) \ b”

Tehát, mint láthatja, a reguláris kifejezések sokkal eredményesebbé tették az ég keresését! Ez azonban viszonylag egyszerű példa volt arra, hogy a regex mit tehet. Az alábbiakban felsorolunk még néhány példát, amelyek bemutatják a reguláris kifejezések erejét és sokoldalúságát:

  • M (u | o) hamm? (E | a) (d | t) leginkább megfelel a Mohammad helyesírási változatai
  • (? hegyi) kerékpár mérkőzések kerékpár de nem hegyi kerékpár
  • kávé (?! dátum) egyezik a kávé de nem a kávé dátuma
  • (https: \ / \ /)? (www \.)? [a- z0–9] + \. [az] + (\. [az] +)? sok URL-hez illeszkedik
  • [a-zA-Z0–9 -\_.] + @ [a-zA-Z] + \. [a-zA-Z] + ( \. [a-zA-Z] +)? sok e-mail címmel egyezik

regexr.com: Remek webhely a regex tanulásához

A korábban leírt példák elgondolkodtathatták „hasznosnak tűnő, de hogyan fogok emlékezni az összes különösre karakterek és mit csinálnak? És hogyan tudom megmondani, hogy a reguláris kifejezésem rendeltetésszerűen működik-e? ”. Ne aggódjon, a regexr.com segítségére van.

Ezen a webhelyen rendszeres kifejezéseket készíthet a mellékelt csalólapok használatával. útmutatóként, és illessze be néhány szövegbe, hogy kipróbálja őket. Az esetleges találatok kiemelésre kerülnek a szövegben és a megjelenített mérkőzések száma. A regex színkóddal van ellátva, és a praktikus eszköztippek leírják, hogy az egyes karakterek mit csinálnak, amikor az egeret rájuk viszi. Ez nagyszerű a regex használatához a regex használatával.

Regex használata a Google Dokumentumokban és a Google Táblázatokban

A Regex használata ezekben a G Suite-alkalmazásokban egyszerű és felhasználóbarát. Egyszerűen nyomja meg a Ctrl + F billentyűkombinációt, majd kattintson a három függőleges pontra a böngésző bal felső sarkában megjelenő keresőmezőben. Alternatív megoldásként keresse meg a legördülő menük Szerkesztés -> Megtalálása és cseréje elemét. Ez megnyitja a Keresés és csere ablakot. Itt megtalálja a Egyezés a reguláris kifejezések használatával (Dokumentumok) vagy a Keresés a reguláris kifejezések használatával (Táblázatok) jelölőnégyzetet. A kiválasztás után beillesztheti a reguláris kifejezést a Keresés mezőbe. Az összes egyezés kiemelésre kerül a dokumentumban, és a találatok száma megjelenik a Keresés mezőben. Továbbra is használhatja a rendelkezésre álló többi keresési és cserélési opciót, például az Egyezés esete t, és a regexe ennek megfelelően fog viselkedni.

A „Regex” (helyettesítő karakterek) használata az MS Word és az Excel programban

Sajnos a rendszeres kifejezéseket a Word és az Excel nem támogatja. Megengedik azonban a „helyettesítő karaktereket”, amelyek ugyanúgy viselkednek, bár a használt szimbólumok néha eltérnek egymástól.

A Word-ben a helyettesítő karakterekkel történő keresés az Advanced Find and Replace (Speciális keresés és csere) funkcióval érhető el. A funkcióra való navigálásról, a helyettesítő karakterek engedélyezéséről és az egyes helyettesítő karakterek működéséről az ebben az útmutatóban olvashat, amely az Office támogatási webhelyén található.

Az Excel programban nem egyértelmű, hogyan lehet helyettesítő karakterekkel keresni, mivel ez nem része egyetlen keresési funkciónak sem. A Speciális szűrők segítségével a lapok szűrésével megtalálhatja a helyettesítő karaktereket tartalmazó keresési kifejezésnek megfelelő cellákat. Kövesse ezt az útmutatót az Office támogatási webhelyéről, ahol a „Helyettesítő karakterek” részben megtalálhatja a helyettesítő karakterek használatát a speciális szűrők részeként.

Hol érhetők el az Excel speciális szűrői, amelyek lehetővé teszik a helyettesítő karakterek használatát

A regex használata a Pythonban

A re könyvtár az alap Python telepítés részeként biztosított. Ez a könyvtár számos olyan funkciót tartalmaz, amelyek lehetővé teszik a karakterláncok elemzését és manipulálását a reguláris kifejezések használatával.

Néhány kulcsfontosságú funkció a következő:

  • re.search ( minta, karakterlánc, flags = 0 ) : Ez az első helyet keresi a string ben, ahol a minta (a reguláris kifejezés) egyezik, és egyezési objektumot ad leírja az egyezést, vagy nincs, ha nem található egyezés.
  • reMatch ( minta , string, flags = 0 ) : Ugyanúgy viselkedik, mint a re.search (), kivéve, hogy csak a karakterlánc
  • re.split ( minta, karakterlánc, flags = 0 ): Hasít string egy listába minta , mint az str.split () metódus, de regexszel.
  • re.sub ( minta, repl, string, count = 0, flags = 0 ): Cserélje le a minta előfordulásait a karakterlánc ban a repl re, ha a repl egy karakterlánc, vagy a repl ha a repl olyan függvény, amely egyetlen egyezési objektumot vesz fel argumentumként

A flags paraméter lehetővé teszi megadhat olyan zászlókat, mint például a re.IGNORECASE , amelyek ennek megfelelően módosítják a regex mintáid viselkedését.

Amikor a regex mintáit stringként írja be a pythonba, hasznos a nyers karakterláncok használata, mivel ezek lehetővé teszik speciális karakterek, például a „\” használatát anélkül, hogy el kellene menekülnie tőlük. Például a következő helyett:

  • pattern = “\\ bsk (y | ies) \\ b”

Használja:

  • pattern = r ”\ bsk (y | ies) \ b”
Példa az újbóli dokumentációból, amely a regex használatát mutatja pozitív megjelenéssel

A re könyvtár itt található: https://docs.python.org/3/library/re.html # module-re

Boldog egyezés !!

Mint láthatja, a reguláris kifejezések sok feladatot sokkal könnyebbé tehetnek, amikor szöveggel dolgoznak. Már csak néhány speciális karakter megtanulása lehetővé teszi a Keresés és csere eszközök sok új használatát. Számos szövegszerkesztő és szövegszerkesztő felismerte hasznosságát, és lehetővé tette a reguláris kifejezések támogatását, vagy saját funkciókat valósított meg hasonló funkciók biztosítása érdekében. A reguláris kifejezések ismerete hasznos eszköz az eszköztárban minden író, szoftverfejlesztő vagy bárki számára, aki gyakran elemzi a szöveget.

AI paletta segíti az FMCG vállalatokat a termékinnovációban. A mesterséges intelligenciát & Gépi tanulás segítségével segítjük az FMCG vállalatokat a fogyasztók számára nyert termékek létrehozásában.