Ha programozó vagy, akkor valószínű, hogy már tudod, mi a reguláris kifejezés (regex). A regex mintákat szinte minden mainstream programozási nyelvben alkalmazták, de a legtöbb fejlesztő mégsem ismeri fel e minták erejét és sokoldalúságát.
Ez az útmutató a reguláris kifejezésekről és azok használatáról szól a Python programozási nyelvben.
Mik azok a reguláris kifejezések?
A reguláris kifejezések olyan minták, amelyek segítik a felhasználót a szövegfájlok és karakterláncok karakterkombinációinak egyeztetésében. A reguláris kifejezések segítségével szűrhet vagy megtalálhat egy adott mintát a parancs vagy egy dokumentum kimenetében.
Különböző esetek vannak a reguláris kifejezésekre, a legismertebbek a grep parancs Linux alatt. Más alkalmazások között szerepel az információszűrés, például az e-mail címek és telefonszámok kibontása az adatgyűjtésből.
A fő ok, amiért sok fejlesztő eltévelyedik a reguláris kifejezések elől, az a tudatosság hiánya a mintaillesztés erejéről. Egyesek még a reguláris kifejezéseket is zavarónak találják a mintákban használt rengeteg karakter és szekvencia miatt.
Bármi is legyen az oka, a rendszeres kifejezések a programozás egyik legfontosabb aspektusát jelentik és lesznek, amelyről mindenkinek tudnia kell.
Reguláris kifejezések: Karakterek és szekvenciák egyeztetése
A Regex önmagában egy teljesen új nyelv. A regex motor több karakterből álló mintákat értelmez, amelyek meghatározott jelentéssel vannak ellátva. Az alapvető literálok, például alfanumerikus karakterek, megegyeznek egymással. De összetett karakterek, például $, *, +, {stb. támogatás magasabb rendű illesztésben.
- Csillag (*): Nulla vagy többször illeszkedik az előző karakterhez. A karakter szó szerinti jelentése "Elem szorozva n-szer". Például, ha a reguláris kifejezés az ABC*, az illesztett húrok ab, abc, abcc, abccc, abcccc stb. A kifejezés [időszámításunk előtt]* meg fog egyezni a bc, bcbc, bcbc stb.
- Plusz (+): Egy vagy többször illeszkedik az előző karakterhez. A + karakter hasonló *, de a + karakter kihagyja a mintát, ha a karakter nem fordul elő. Például, abc + meg fog egyezni az abc, abcc, abccc stb. de nem ab.
- Kérdőjel (?): Megfelel az előző karakter nulla vagy egy alkalommal. Például a minta ABC? csak az ab és az abc színekkel fog megfelelni.
- Cső (|): Binárisként használják VAGY operátor. Megegyezik a pipát megelőző és követő karakterek bármelyikével. Például, a | b vagy az a vagy a b.
- Pont (.): Egyezik egy karakterrel, akinek a személye ismeretlen. Például, a.c illeszkedik az aac, abc, acc, a2c stb.
- Sárgarépa (^): Egyezik a minta első karakterével. Például, ^ Ra kezdetű szavakkal illeszkedik Ra mint például a Nyúl, a Raccoon és a Random.
- Dollár ($): Egyezik a minta utolsó karakterével. Például, egy $ betűvel végződő szavakat fog illeszteni an mint Van, Dan és Plan.
- Kötőjel (-): Karaktertartomány meghatározására szolgál. Például, [0-9] minden egyjegyű numerikus karaktert meg fog egyezni.
A reguláris expressziós mintákban használt speciális szekvenciák a következők:
- \ A: Egyezést ad vissza, ha a következő karakterek szerepelnek a karakterlánc elején. Például, \ AThe a -vel kezdődő szavakat illeszti A mint például The, Them, They stb.
- \ b: Egyezést ad vissza, ha a karakter a szó elején vagy végén található. Például, \ bmad és őrült \ b illeszkedik az olyan szavakhoz, mint készült és nomád illetőleg.
- \ B: Egyezést ad vissza, ha a karakter nem található a szó elején vagy végén.
- \ d: Megegyezik a karakterláncban szereplő számjeggyel. Például, /d* olyan számokkal fog egyezni, mint 1, 12, 1232 stb.
- \ D: Nem karakteres karaktereket illeszt a karakterláncba. / D a, b, c, f stb.
- \ s: Megfelel a szóköz karakterének a szövegben.
- \ S: A szöveg nem fehér szóköz karakterével egyezik.
- \ w: Ha a karakterlánc alfanumerikus karaktereket tartalmaz, beleértve az aláhúzást is, egyezést ad vissza. Például, \ w a, b, c, d, 1, 2, 3 stb.
- \ W: Egyezést ad vissza, ha a karakterlánc nem tartalmaz alfanumerikus karaktereket vagy aláhúzásokat.
- \ Z: Megfelel a karaktereknek a karakterlánc végén. Például, vége \ Z betűvel végződő szavakat fog illeszteni vége például hajlítani, javítani, hajlamosítani stb.
Python-módszerek a reguláris kifejezésekhez
A Pythonban az újra könyvtár biztosítja az összes szükséges funkciót és segédprogramot, amelyek szükségesek a regex programokban való megvalósításához. Nem kell letöltenie a könyvtárat a pip használatával, mivel a Python tolmács előre telepítve van.
A. Importálásához újra Python könyvtárba, adja hozzá a következő kódot a parancsfájljához:
import re
Megjegyezzük, hogy miközben a Python rendszeres kifejezéseket ad át, nyers karakterláncokat használunk, mivel nem értelmezik az olyan speciális karaktereket, mint pl \ n és \ t eltérően.
Mérkőzés()
A visszamérés () metódus a Pythonban egy regex objektumot ad vissza, ha a program talál egyezést a megadott karakterlánc elején. Ennek a függvénynek két alapvető argumentuma van:
újracsatlakozás (minta, karakterlánc)
...hol minta a reguláris kifejezés és húr az a szöveg, amelyre keresni kell.
Vessen egy pillantást az alábbi kódrészletre.
import re
match = re.match (r'Word ', "Ez a mondat tartalmaz egy szót")
nyomtatás (egyezés)
A r a karakterlánc a nyers karakterlánc előtt áll.
Kimenet:
Egyik sem
A fent említett kód visszatér Egyik sem mivel Szó nem volt jelen a húr elején.
Ha talál egyezést, akkor kinyomtathatja a mérkőzést a csoport() metódus, amely a regex objektumhoz tartozik.
import re
match = re.match (r'Word ', "A szót nehéz elolvasni")
nyomtatás (match.group (0))
Kimenet:
Szó
Keresés()
A kutatás() metódus hasonló érveket vesz fel, mint a re.match (). Míg a match () csak a karakterlánc elején található egyezéseket adja vissza, keresés() a karakterlánc bármely indexénél talált találatokat adja vissza.
import re
match = re.search (r'Word ', "Ez a mondat egy Word-t tartalmaz. A szót nehéz elolvasni. ")
nyomtatás (match.group (0))
Vegye figyelembe, hogy a mérkőzés() és keresés() A metódusok csak egy minta egyezést adnak vissza. A fent említett kódban Szó kétszer jelenik meg. De a keresés() függvény csak a szó első előfordulásával fog egyezni.
Szó
Találd meg mindet()
Mint már sejteni lehet, a Találd meg mindet() metódus minden lehetséges egyezést ad vissza a karakterláncban.
import re
match = re.search (r'Word ', "Ez a mondat egy Word-t tartalmaz. A szót nehéz elolvasni. ")
a meccs eleméhez:
nyomtatás (elem)
A regex objektum visszaküldése helyett a findall () függvény visszaadja az összes egyezés listáját. A listán keresztül iterálhat az a használatával hurokhoz a pythonban.
Hasított()
Ha egy karakterláncot rész-karakterláncokra akar felosztani, mintázat elválasztóként, akkor a hasított() funkcióra van szüksége.
import re
split = re.split (r'and ', "Ez a szó és ez, és ez különbözik.")
nyomtatás (felosztás)
Kimenet:
['Ez a szó "," az "," ez más. "]
Alatti()
A alatti() A módszer lehetővé teszi a felhasználó számára, hogy egy adott szót helyettesítsen a minta helyén. A következő érvekre van szükség.
re.sub (minta, csere, karakterlánc)
Fontolja meg ezt a kódrészletet:
import re
eredmény = re.sub (r'and ',' vagy ', "Dave-t és Harryt meg kell büntetni.")
nyomtatás (eredmény)
Kimenet:
Dave-t vagy Harryt meg kell büntetni.
Összeállítás ()
A re.compile () módszer a újra A könyvtár lehetővé teszi a felhasználó számára, hogy a reguláris kifejezésminta fordított változatát eltárolja a memóriában. Ezután a fordított objektum segítségével a felhasználó gyorsan kiszűrheti a megadott szöveges kiírást az egyező mintákra.
import re
minta = re.compile ('Python')
match = pattern.findall ("A Python nagyszerű nyelv szkriptek írására. A Python könnyen megtanulható. ")
nyomtatás (egyezés)
Ezt a funkciót elsősorban olyan erőforrás-igényes minták mentésére használják, amelyek futtatásához sok időre van szükség. A minta objektumként történő összeállítása és mentése előzetesen megoldja ezt a problémát.
Használja ki a Regex erejét a Python segítségével
Amikor szövegfájlokkal és kimenettel dolgozik, a regex egy nagyszerű eszköz, amely rendelkezésére áll. Gyorsan írhat néhány kódot a dokumentum bizonyos mintáinak szűrésére vagy helyettesítésére.
Az összes karakter és a megfelelő szekvenciák megjegyzése nehéz lehet, ha csak a regexel kezdi. A reguláris kifejezések jobb kihasználása érdekében a karakterek, módszerek és szekvenciák listájára való hivatkozás hébe-hóba mindenképpen hosszú távon segít.
Használja ezt a Python reguláris kifejezések listáját, hogy jobban kihasználhassa ezt a sokoldalú programozási nyelvet.
Olvassa el a következőt
- Programozás
- Programozás
- Piton
Deepesh a MUO Linux junior szerkesztője. Több mint 3 éve ír információs tartalmat az interneten. Szabadidejében szívesen ír, zenét hallgat és gitározik.
Iratkozzon fel hírlevelünkre
Csatlakozzon hírlevelünkhöz, amely műszaki tippeket, véleményeket, ingyenes e-könyveket és exkluzív ajánlatokat tartalmaz!
Még egy lépés…!
Kérjük, erősítse meg e-mail címét az imént elküldött e-mailben.