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.
\dMatchar siffra. Motsvarar
[0-9].\DMatchar icke-siffra. Motsvarar
[^0-9].\sMatchar blanksteg. Motsvarar
[ \t-\r].\SMatchar icke-blanksteg. Motsvarar
[^ \t-\r].\wMatchar ”ordtecken” (endast ASCII). Motsvarar
[A-Za-z0-9_].\WMatchar 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,\nosv. inte hanteras särskilt, och kommer att vara likvärdiga med de bokstavliga bokstävernar,nosv. På grund av detta rekommenderas det inte att använda råa Python-strängar (r"") för reguljära uttryck. Till exempel ärr"\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älletosv.
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
matchsö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, ellerNoneom det reguljära uttrycket inte matchar. Detta är motsvarigheten för kompilerade mönster tillmatchpå 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 - 1genomsöks. Om endpos ärNone(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, ellerNoneom ingen position matchar. Detta är motsvarigheten för kompilerade mönster till funktionensearch()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 - 1genomsöks. Om endpos ärNone(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.
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
Noneom det inte matchar. Detta är genvägen på modulnivå:re.match(regex_str, string)är likvärdigt medre.compile(regex_str).match(string).Samma matchningsobjekt returneras även av
search(), av metodernaregex.match()/regex.search()för kompilerade mönster, och skickas till ersättningsfunktionen som används avsub().