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.

instagram viewer

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.

  1. 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.
  2. 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.
  3. 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.
  4. 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.
  5. Pont (.): Egyezik egy karakterrel, akinek a személye ismeretlen. Például, a.c illeszkedik az aac, abc, acc, a2c stb.
  6. 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.
  7. 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.
  8. 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:

  1. \ 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.
  2. \ 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.
  3. \ B: Egyezést ad vissza, ha a karakter nem található a szó elején vagy végén.
  4. \ d: Megegyezik a karakterláncban szereplő számjeggyel. Például, /d* olyan számokkal fog egyezni, mint 1, 12, 1232 stb.
  5. \ D: Nem karakteres karaktereket illeszt a karakterláncba. / D a, b, c, f stb.
  6. \ s: Megfelel a szóköz karakterének a szövegben.
  7. \ S: A szöveg nem fehér szóköz karakterével egyezik.
  8. \ 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.
  9. \ W: Egyezést ad vissza, ha a karakterlánc nem tartalmaz alfanumerikus karaktereket vagy aláhúzásokat.
  10. \ 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.

Email
A Python RegEx csalólap kezdő programozóknak

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

Kapcsolódó témák
  • Programozás
  • Programozás
  • Piton
A szerzőről
Deepesh Sharma (41 cikk megjelent)

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.

Tovább a Deepesh Sharma-tól

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.

.