re — jednostavni regularni izrazi

Ovaj modul implementira operacije s regularnim izrazima. Podržana sintaksa regularnih izraza podskup je modula re iz CPythona (i zapravo je podskup proširenih POSIX regularnih izraza).

Podržani operatori i posebni nizovi su:

.

Podudara se s bilo kojim znakom.

[...]

Podudara se sa skupom znakova. Podržani su pojedinačni znakovi i rasponi, uključujući negirane skupove (npr. [^a-c]).

^

Podudara se s početkom niza.

$

Podudara se s krajem niza.

?

Podudara se s nula ili jednim ponavljanjem prethodnog poduzorka.

*

Podudara se s nula ili više ponavljanja prethodnog poduzorka.

+

Podudara se s jednim ili više ponavljanja prethodnog poduzorka.

??

Negreedy verzija od ?, podudara se s nula ili jednim, uz prednost za nula.

*?

Negreedy verzija od *, podudara se s nula ili više, uz prednost za najkraće podudaranje.

+?

Negreedy verzija od +, podudara se s jednim ili više, uz prednost za najkraće podudaranje.

|

Podudara se s lijevim ili desnim poduzorkom ovog operatora.

(...)

Grupiranje. Svaka grupa hvata (uhvaćenom podnizu može se pristupiti metodom match.group()).

(?:...)

Negrupirajuće grupiranje. Svaka se grupa podudara prema istim pravilima kao i obično grupiranje, ali neće biti dio objekta podudaranja.

\d

Podudara se sa znamenkom. Ekvivalentno [0-9].

\D

Podudara se sa znakom koji nije znamenka. Ekvivalentno [^0-9].

\s

Podudara se s prazninom. Ekvivalentno [ \t-\r].

\S

Podudara se sa znakom koji nije praznina. Ekvivalentno [^ \t-\r].

\w

Podudara se sa „znakovima riječi” (samo ASCII). Ekvivalentno [A-Za-z0-9_].

\W

Podudara se sa znakovima koji nisu „znakovi riječi” (samo ASCII). Ekvivalentno [^A-Za-z0-9_].

\

Escape znak. Svaki drugi znak koji slijedi nakon obrnute kose crte, osim onih navedenih gore, uzima se doslovno. Na primjer, \* je ekvivalentno doslovnom * (ne tretira se kao operator *). Imajte na umu da se \r, \n itd. ne obrađuju posebno te će biti ekvivalentni doslovnim slovima r, n itd. Zbog toga se ne preporučuje korištenje sirovih Python nizova (r"") za regularne izraze. Na primjer, r"\r\n" kada se koristi kao regularni izraz ekvivalentno je "rn". Za podudaranje znaka CR iza kojeg slijedi LF, koristite "\r\n".

NIJE PODRŽANO:

  • brojana ponavljanja ({m,n})

  • imenovane grupe ((?P<name>...))

  • naprednije tvrdnje (\b, \B)

  • escape sekvence posebnih znakova poput \r, \n - umjesto toga koristite vlastito Python escapanje

  • itd.

Primjer:

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', '', '']

Funkcije

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

Kompilira regularni izraz i vraća regex objekt.

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

Kompilira regex_str i pretražuje ga u nizu string. Za razliku od match, ovo pretražuje niz tražeći prvu poziciju koja se podudara s regularnim izrazom (što i dalje može biti 0 ako je regularni izraz usidren).

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

Kompilira regex_str i pretražuje ga u nizu string, zamjenjujući sva podudaranja s replace i vraćajući novi niz.

replace može biti niz ili funkcija. Ako je niz, tada se escape sekvence oblika \<number> i \g<number> mogu koristiti za proširenje na odgovarajuću grupu (ili na prazan niz za grupe bez podudaranja). Ako je replace funkcija, mora primati jedan argument (podudaranje) i treba vraćati zamjenski niz.

Ako je count naveden i različit od nule, tada će se zamjena zaustaviti nakon ovoliko izvršenih zamjena. Argument flags se zanemaruje.

Regex objekti

Kompilirani regularni izraz. Instance ove klase stvaraju se pomoću re.compile().

class re.regex

Objekt kompiliranog regularnog izraza koji vraća re.compile().

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

Primjenjuje ovaj kompilirani regularni izraz na niz string, usidren na početku područja pretrage, i vraća match objekt ili None ako se regularni izraz ne podudara. Ovo je ekvivalent kompiliranog uzorka za match na razini modula i mnogo je učinkovitiji kada se isti uzorak primjenjuje na više nizova.

Neobavezni parametar pos daje indeks u nizu string na kojem pretraga treba započeti; zadana vrijednost je 0. Ovo nije potpuno ekvivalentno rezanju niza; znak uzorka '^' podudara se na stvarnom početku niza i na pozicijama neposredno nakon novog reda, ali ne nužno na indeksu na kojem pretraga treba započeti.

Neobavezni parametar endpos ograničava koliko daleko se niz string pretražuje; bit će kao da je niz dug endpos znakova, tako da se pretražuju samo znakovi od pos do endpos - 1. Ako je endpos None (zadana vrijednost), pretražuje se cijeli niz.

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

Pregledava niz string tražeći prvo mjesto na kojem ovaj kompilirani regularni izraz daje podudaranje i vraća match objekt ili None ako se nijedna pozicija ne podudara. Ovo je ekvivalent kompiliranog uzorka za funkciju search() na razini modula i mnogo je učinkovitiji kada se isti uzorak primjenjuje na više nizova.

Neobavezni parametar pos daje indeks u nizu string na kojem pretraga treba započeti; zadana vrijednost je 0. Ovo nije potpuno ekvivalentno rezanju niza; znak uzorka '^' podudara se na stvarnom početku niza i na pozicijama neposredno nakon novog reda, ali ne nužno na indeksu na kojem pretraga treba započeti.

Neobavezni parametar endpos ograničava koliko daleko se niz string pretražuje; bit će kao da je niz dug endpos znakova, tako da se pretražuju samo znakovi od pos do endpos - 1. Ako je endpos None (zadana vrijednost), pretražuje se cijeli niz.

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

Pretražuje ovaj kompilirani regularni izraz u nizu string, zamjenjujući sva podudaranja s replace i vraća novi niz. Ovo je ekvivalent kompiliranog uzorka za funkciju sub() na razini modula i mnogo je učinkovitiji kada se isti uzorak primjenjuje na više nizova.

replace može biti niz ili funkcija. Ako je niz, tada se escape sekvence oblika \<number> i \g<number> mogu koristiti za proširenje na odgovarajuću grupu (ili na prazan niz za grupe bez podudaranja). Ako je replace funkcija, mora primati jedan argument (podudaranje) i treba vraćati zamjenski niz.

Ako je count naveden i različit od nule, tada će se zamjena zaustaviti nakon ovoliko izvršenih zamjena. Argument flags se zanemaruje.

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

Dijeli niz string pomoću regularnog izraza. Ako je max_split naveden, određuje maksimalni broj dijeljenja koja se izvode. Vraća popis nizova (može biti do max_split+1 elemenata ako je naveden).

Objekti podudaranja

Objekt podudaranja sadrži rezultat uspješnog podudaranja.

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

Podudara regex_str s nizom string, usidren na početku niza, i vraća objekt podudaranja ili None ako se ne podudara. Ovo je prečac na razini modula: re.match(regex_str, string) ekvivalentno je re.compile(regex_str).match(string).

Isti objekt podudaranja vraćaju i search(), metode kompiliranog uzorka regex.match() / regex.search(), te se prosljeđuje zamjenskoj funkciji koju koristi sub().

group(index: int) str

Vraća podudarajući (pod)niz. index je 0 za cijelo podudaranje, 1 i više za svaku grupu koja hvata. Podržane su samo numeričke grupe.