re — egyszerű reguláris kifejezések

Ez a modul reguláris kifejezésekkel kapcsolatos műveleteket valósít meg. A támogatott reguláris kifejezés szintaxis a CPython re moduljának egy részhalmaza (és valójában a POSIX kiterjesztett reguláris kifejezések részhalmaza).

A támogatott operátorok és speciális szekvenciák a következők:

.

Bármely karakterre illeszkedik.

[...]

Karakterhalmazra illeszkedik. Egyedi karakterek és tartományok is támogatottak, beleértve a negált halmazokat is (pl. [^a-c]).

^

A karakterlánc elejére illeszkedik.

$

A karakterlánc végére illeszkedik.

?

Az előző részmintából nullára vagy egyre illeszkedik.

*

Az előző részmintából nullára vagy többre illeszkedik.

+

Az előző részmintából egyre vagy többre illeszkedik.

??

A ? nem mohó változata; nullára vagy egyre illeszkedik, a nulla előnyben részesítésével.

*?

A * nem mohó változata; nullára vagy többre illeszkedik, a legrövidebb illeszkedés előnyben részesítésével.

+?

A + nem mohó változata; egyre vagy többre illeszkedik, a legrövidebb illeszkedés előnyben részesítésével.

|

Az operátor bal oldali vagy jobb oldali részmintájára illeszkedik.

(...)

Csoportosítás. Minden csoport elfogó (capturing) (az általa elfogott részlánc a match.group() metódussal érhető el).

(?:...)

Nem elfogó csoportosítás. Minden csoport ugyanazon szabályok szerint illeszkedik, mint a normál csoportosítás, de nem lesz része az illeszkedési objektumnak.

\d

Számjegyre illeszkedik. Egyenértékű a [0-9] kifejezéssel.

\D

Nem számjegyre illeszkedik. Egyenértékű a [^0-9] kifejezéssel.

\s

Szóköz jellegű karakterre illeszkedik. Egyenértékű a [ \t-\r] kifejezéssel.

\S

Nem szóköz jellegű karakterre illeszkedik. Egyenértékű a [^ \t-\r] kifejezéssel.

\w

„Szó karakterekre” illeszkedik (csak ASCII). Egyenértékű a [A-Za-z0-9_] kifejezéssel.

\W

Nem „szó karakterekre” illeszkedik (csak ASCII). Egyenértékű a [^A-Za-z0-9_] kifejezéssel.

\

Escape karakter. A visszaper után álló bármely más karakter, a fent felsoroltak kivételével, szó szerint értelmeződik. Például a \* egyenértékű a szó szerinti * karakterrel (nem * operátorként kezelődik). Vegye figyelembe, hogy a \r, \n stb. nem kapnak speciális kezelést, és egyenértékűek lesznek a szó szerinti r, n stb. betűkkel. Emiatt nem ajánlott nyers Python karakterláncokat (r"") használni reguláris kifejezésekhez. Például az r"\r\n" reguláris kifejezésként használva egyenértékű a "rn" kifejezéssel. Egy CR karakter és az azt követő LF illesztéséhez használja a "\r\n" formát.

NEM TÁMOGATOTT:

  • számlált ismétlések ({m,n})

  • elnevezett csoportok ((?P<name>...))

  • fejlettebb állítások (\b, \B)

  • speciális karakter escape-ek, mint \r, \n - használja helyettük a Python saját escape-elését

  • stb.

Példa:

import re

# As re doesn't support escapes itself, use of r"" strings is not
# recommended.
regex = re.compile("[\r\n]")

regex.split("line1\rline2\nline3\r\n")

# Result:
# ['line1', 'line2', 'line3', '', '']

Függvények

re.compile(regex_str: str, flags: int = 0) 'regex'

Lefordítja a reguláris kifejezést, és egy regex objektumot ad vissza.

re.search(regex_str: str, string: str) 'match | None'

Lefordítja a regex_str kifejezést, és megkeresi azt egy string karakterláncban. A match függvénnyel ellentétben ez az első olyan pozíciót keresi a karakterláncban, amely illeszkedik a regexre (ami még mindig lehet 0, ha a regex le van horgonyozva).

re.sub(regex_str: str, replace: str | Callable, string: str, count: int = 0, flags: int = 0, /) str

Lefordítja a regex_str kifejezést, és megkeresi azt a string karakterláncban, az összes illeszkedést a replace értékkel helyettesítve, majd visszaadja az új karakterláncot.

A replace lehet karakterlánc vagy függvény. Ha karakterlánc, akkor a \<number> és \g<number> formájú escape szekvenciák használhatók a megfelelő csoportra való kibontáshoz (vagy üres karakterláncra a nem illeszkedő csoportok esetén). Ha a replace függvény, akkor egyetlen argumentumot (az illeszkedést) kell fogadnia, és egy helyettesítő karakterláncot kell visszaadnia.

Ha a count meg van adva és nem nulla, akkor a helyettesítés ennyi helyettesítés elvégzése után leáll. A flags argumentum figyelmen kívül marad.

Regex objektumok

Lefordított reguláris kifejezés. Ennek az osztálynak a példányai a re.compile() segítségével jönnek létre.

class re.regex

A re.compile() által visszaadott lefordított reguláris kifejezés objektum.

match(string: str, pos: int = 0, endpos: int | None = None) 'match | None'

Alkalmazza ezt a lefordított regexet a string karakterláncra, a keresési régió elejére lehorgonyozva, és egy match objektumot ad vissza, vagy None értéket, ha a regex nem illeszkedik. Ez a modulszintű match lefordított mintájú megfelelője, és sokkal hatékonyabb, ha ugyanazt a mintát több karakterláncra alkalmazzuk.

Az opcionális pos paraméter egy indexet ad meg a string karakterláncban, ahol a keresés kezdődjön; alapértelmezett értéke 0. Ez nem teljesen egyenértékű a karakterlánc szeletelésével; a '^' mintakarakter a karakterlánc valódi elején és egy újsor karakter utáni pozíciókban illeszkedik, de nem feltétlenül azon az indexen, ahol a keresés kezdődik.

Az opcionális endpos paraméter korlátozza, hogy a string meddig legyen átkutatva; úgy működik, mintha a karakterlánc endpos karakter hosszú lenne, így csak a pos indextől az endpos - 1 indexig terjedő karakterek kerülnek átvizsgálásra. Ha az endpos None (az alapértelmezett), akkor a teljes karakterlánc átkutatásra kerül.

search(string: str, pos: int = 0, endpos: int | None = None) 'match | None'

Végigvizsgálja a string karakterláncot, megkeresve az első olyan helyet, ahol ez a lefordított regex illeszkedést eredményez, és egy match objektumot ad vissza, vagy None értéket, ha egyetlen pozíció sem illeszkedik. Ez a modulszintű search() függvény lefordított mintájú megfelelője, és sokkal hatékonyabb, ha ugyanazt a mintát több karakterláncra alkalmazzuk.

Az opcionális pos paraméter egy indexet ad meg a string karakterláncban, ahol a keresés kezdődjön; alapértelmezett értéke 0. Ez nem teljesen egyenértékű a karakterlánc szeletelésével; a '^' mintakarakter a karakterlánc valódi elején és egy újsor karakter utáni pozíciókban illeszkedik, de nem feltétlenül azon az indexen, ahol a keresés kezdődik.

Az opcionális endpos paraméter korlátozza, hogy a string meddig legyen átkutatva; úgy működik, mintha a karakterlánc endpos karakter hosszú lenne, így csak a pos indextől az endpos - 1 indexig terjedő karakterek kerülnek átvizsgálásra. Ha az endpos None (az alapértelmezett), akkor a teljes karakterlánc átkutatásra kerül.

sub(replace: str | Callable, string: str, count: int = 0, flags: int = 0, /) str

Megkeresi ezt a lefordított regexet a string karakterláncban, az összes illeszkedést a replace értékkel helyettesítve, és visszaadja az új karakterláncot. Ez a modulszintű sub() függvény lefordított mintájú megfelelője, és sokkal hatékonyabb, ha ugyanazt a mintát több karakterláncra alkalmazzuk.

A replace lehet karakterlánc vagy függvény. Ha karakterlánc, akkor a \<number> és \g<number> formájú escape szekvenciák használhatók a megfelelő csoportra való kibontáshoz (vagy üres karakterláncra a nem illeszkedő csoportok esetén). Ha a replace függvény, akkor egyetlen argumentumot (az illeszkedést) kell fogadnia, és egy helyettesítő karakterláncot kell visszaadnia.

Ha a count meg van adva és nem nulla, akkor a helyettesítés ennyi helyettesítés elvégzése után leáll. A flags argumentum figyelmen kívül marad.

split(string: str, max_split: int = -1, /) List[str]

Feldarabolja a string karakterláncot a regex segítségével. Ha a max_split meg van adva, az megadja az elvégzendő darabolások maximális számát. Karakterláncok listáját adja vissza (ha meg van adva, akár max_split+1 elem is lehet).

Match objektumok

Egy match objektum egy sikeres illeszkedés eredményét tartalmazza.

class re.match(regex_str: str, string: str)

Illeszti a regex_str kifejezést a string karakterláncra, a karakterlánc elejére lehorgonyozva, és egy match objektumot ad vissza, vagy None értéket, ha nem illeszkedik. Ez a modulszintű gyorsírás: az re.match(regex_str, string) egyenértékű az re.compile(regex_str).match(string) kifejezéssel.

Ugyanezt a match objektumot adja vissza a search(), valamint a lefordított mintájú regex.match() / regex.search() metódusok is, és ezt adja át a sub() által használt helyettesítő függvénynek.

group(index: int) str

Visszaadja az illeszkedő (rész)karakterláncot. Az index értéke 0 a teljes illeszkedéshez, 1 és afölött az egyes elfogó csoportokhoz. Csak numerikus csoportok támogatottak.