re — enkla reguljära uttryck

Denna modul implementerar operationer för reguljära uttryck. Den syntax för reguljära uttryck som stöds är en delmängd av CPythons re-modul (och är i själva verket en delmängd av POSIX utökade reguljära uttryck).

Operatorer och specialsekvenser som stöds är:

.

Matchar valfritt tecken.

[...]

Matchar en uppsättning tecken. Enskilda tecken och intervall stöds, inklusive negerade uppsättningar (t.ex. [^a-c]).

^

Matchar början av strängen.

$

Matchar slutet av strängen.

?

Matchar noll eller en förekomst av föregående delmönster.

*

Matchar noll eller flera förekomster av föregående delmönster.

+

Matchar en eller flera förekomster av föregående delmönster.

??

Icke-girig version av ?, matchar noll eller en, med preferens för noll.

*?

Icke-girig version av *, matchar noll eller flera, med preferens för den kortaste matchningen.

+?

Icke-girig version av +, matchar en eller flera, med preferens för den kortaste matchningen.

|

Matchar antingen vänster- eller högersidans delmönster för denna operator.

(...)

Gruppering. Varje grupp fångar (en delsträng som den fångar kan nås med metoden match.group()).

(?:...)

Icke-fångande gruppering. Varje grupp matchas enligt samma regler som vanlig gruppering, men kommer inte att vara en del av matchningsobjektet.

\d

Matchar siffra. Motsvarar [0-9].

\D

Matchar icke-siffra. Motsvarar [^0-9].

\s

Matchar blanksteg. Motsvarar [ \t-\r].

\S

Matchar icke-blanksteg. Motsvarar [^ \t-\r].

\w

Matchar ”ordtecken” (endast ASCII). Motsvarar [A-Za-z0-9_].

\W

Matchar icke-”ordtecken” (endast ASCII). Motsvarar [^A-Za-z0-9_].

\

Escape-tecken. Varje annat tecken som följer på det omvända snedstrecket, förutom de som listas ovan, tas bokstavligt. Till exempel är \* likvärdigt med det bokstavliga * (behandlas inte som operatorn *). Observera att \r, \n osv. inte hanteras särskilt, och kommer att vara likvärdiga med de bokstavliga bokstäverna r, n osv. På grund av detta rekommenderas det inte att använda råa Python-strängar (r"") för reguljära uttryck. Till exempel är r"\r\n" när det används som reguljärt uttryck likvärdigt med "rn". För att matcha ett CR-tecken följt av LF, använd "\r\n".

STÖDS INTE:

  • räknade upprepningar ({m,n})

  • namngivna grupper ((?P<name>...))

  • mer avancerade villkor (\b, \B)

  • specialteckens-escapes som \r, \n - använd Pythons egen escaping istället

  • osv.

Exempel:

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

Funktioner

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

Kompilera reguljärt uttryck, returnera ett regex-objekt.

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

Kompilera regex_str och sök efter det i en string. Till skillnad från match söker detta i strängen efter den första positionen som matchar det reguljära uttrycket (vilket fortfarande kan vara 0 om det reguljära uttrycket är förankrat).

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

Kompilera regex_str och sök efter det i string, ersätt alla matchningar med replace och returnera den nya strängen.

replace kan vara en sträng eller en funktion. Om det är en sträng kan escape-sekvenser av formen \<number> och \g<number> användas för att expandera till motsvarande grupp (eller en tom sträng för omatchade grupper). Om replace är en funktion måste den ta ett enda argument (matchningen) och bör returnera en ersättningssträng.

Om count anges och är skilt från noll kommer ersättningen att stoppa efter att så många ersättningar har gjorts. Argumentet flags ignoreras.

Regex-objekt

Kompilerat reguljärt uttryck. Instanser av denna klass skapas med re.compile().

class re.regex

Kompilerat objekt för reguljärt uttryck som returneras av re.compile().

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

Tillämpa detta kompilerade reguljära uttryck på string, förankrat vid början av sökregionen, och returnera ett match-objekt, eller None om det reguljära uttrycket inte matchar. Detta är motsvarigheten för kompilerade mönster till match på modulnivå, och är mycket effektivare när samma mönster tillämpas på flera strängar.

Den valfria parametern pos anger ett index i string där sökningen ska börja; standardvärdet är 0. Detta är inte helt likvärdigt med att slica strängen; mönstertecknet '^' matchar vid strängens verkliga början och vid positioner direkt efter en radbrytning, men inte nödvändigtvis vid det index där sökningen ska börja.

Den valfria parametern endpos begränsar hur långt string genomsöks; det blir som om strängen är endpos tecken lång, så endast tecknen från pos till endpos - 1 genomsöks. Om endpos är None (standard) genomsöks hela strängen.

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

Sök igenom string efter den första plats där detta kompilerade reguljära uttryck ger en matchning, och returnera ett match-objekt, eller None om ingen position matchar. Detta är motsvarigheten för kompilerade mönster till funktionen search() på modulnivå, och är mycket effektivare när samma mönster tillämpas på flera strängar.

Den valfria parametern pos anger ett index i string där sökningen ska börja; standardvärdet är 0. Detta är inte helt likvärdigt med att slica strängen; mönstertecknet '^' matchar vid strängens verkliga början och vid positioner direkt efter en radbrytning, men inte nödvändigtvis vid det index där sökningen ska börja.

Den valfria parametern endpos begränsar hur långt string genomsöks; det blir som om strängen är endpos tecken lång, så endast tecknen från pos till endpos - 1 genomsöks. Om endpos är None (standard) genomsöks hela strängen.

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

Sök efter detta kompilerade reguljära uttryck i string, ersätt alla matchningar med replace och returnera den nya strängen. Detta är motsvarigheten för kompilerade mönster till funktionen sub() på modulnivå, och är mycket effektivare när samma mönster tillämpas på flera strängar.

replace kan vara en sträng eller en funktion. Om det är en sträng kan escape-sekvenser av formen \<number> och \g<number> användas för att expandera till motsvarande grupp (eller en tom sträng för omatchade grupper). Om replace är en funktion måste den ta ett enda argument (matchningen) och bör returnera en ersättningssträng.

Om count anges och är skilt från noll kommer ersättningen att stoppa efter att så många ersättningar har gjorts. Argumentet flags ignoreras.

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

Dela upp en string med hjälp av ett reguljärt uttryck. Om max_split anges specificerar det det maximala antalet uppdelningar som ska utföras. Returnerar en lista med strängar (det kan finnas upp till max_split+1 element om det anges).

Matchningsobjekt

Ett matchningsobjekt innehåller resultatet av en lyckad matchning.

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

Matcha regex_str mot string, förankrat vid strängens början, och returnera ett matchningsobjekt, eller None om det inte matchar. Detta är genvägen på modulnivå: re.match(regex_str, string) är likvärdigt med re.compile(regex_str).match(string).

Samma matchningsobjekt returneras även av search(), av metoderna regex.match() / regex.search() för kompilerade mönster, och skickas till ersättningsfunktionen som används av sub().

group(index: int) str

Returnera den matchande (del)strängen. index är 0 för hela matchningen, 1 och uppåt för varje fångande grupp. Endast numeriska grupper stöds.