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.
\dSzámjegyre illeszkedik. Egyenértékű a
[0-9]kifejezéssel.\DNem számjegyre illeszkedik. Egyenértékű a
[^0-9]kifejezéssel.\sSzóköz jellegű karakterre illeszkedik. Egyenértékű a
[ \t-\r]kifejezéssel.\SNem 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.\WNem „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,\nstb. nem kapnak speciális kezelést, és egyenértékűek lesznek a szó szerintir,nstb. betűkkel. Emiatt nem ajánlott nyers Python karakterláncokat (r"") használni reguláris kifejezésekhez. Például azr"\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étstb.
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
matchfü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
matchobjektumot ad vissza, vagyNoneértéket, ha a regex nem illeszkedik. Ez a modulszintűmatchlefordí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 - 1indexig terjedő karakterek kerülnek átvizsgálásra. Ha az endposNone(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
matchobjektumot ad vissza, vagyNoneé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 - 1indexig terjedő karakterek kerülnek átvizsgálásra. Ha az endposNone(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.
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: azre.match(regex_str, string)egyenértékű azre.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 asub()által használt helyettesítő függvénynek.