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.
\dPodudara se sa znamenkom. Ekvivalentno
[0-9].\DPodudara se sa znakom koji nije znamenka. Ekvivalentno
[^0-9].\sPodudara se s prazninom. Ekvivalentno
[ \t-\r].\SPodudara se sa znakom koji nije praznina. Ekvivalentno
[^ \t-\r].\wPodudara se sa „znakovima riječi” (samo ASCII). Ekvivalentno
[A-Za-z0-9_].\WPodudara 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,\nitd. ne obrađuju posebno te će biti ekvivalentni doslovnim slovimar,nitd. 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 escapanjeitd.
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.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
matchobjekt iliNoneako se regularni izraz ne podudara. Ovo je ekvivalent kompiliranog uzorka zamatchna 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 endposNone(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
matchobjekt iliNoneako se nijedna pozicija ne podudara. Ovo je ekvivalent kompiliranog uzorka za funkcijusearch()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 endposNone(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.
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
Noneako se ne podudara. Ovo je prečac na razini modula:re.match(regex_str, string)ekvivalentno jere.compile(regex_str).match(string).Isti objekt podudaranja vraćaju i
search(), metode kompiliranog uzorkaregex.match()/regex.search(), te se prosljeđuje zamjenskoj funkciji koju koristisub().