re — jednoduché regulární výrazy¶
Tento modul implementuje operace s regulárními výrazy. Podporovaná syntaxe regulárních výrazů je podmnožinou modulu re z CPythonu (a ve skutečnosti je podmnožinou rozšířených regulárních výrazů POSIX).
Podporované operátory a speciální sekvence jsou:
.Odpovídá libovolnému znaku.
[...]Odpovídá množině znaků. Podporovány jsou jednotlivé znaky i rozsahy, včetně negovaných množin (např.
[^a-c]).^Odpovídá začátku řetězce.
$Odpovídá konci řetězce.
?Odpovídá nule nebo jednomu výskytu předchozího podvzoru.
*Odpovídá nule nebo více výskytům předchozího podvzoru.
+Odpovídá jednomu nebo více výskytům předchozího podvzoru.
??Nenenasytná (non-greedy) varianta
?, odpovídá nule nebo jednomu výskytu s preferencí nuly.*?Nenenasytná (non-greedy) varianta
*, odpovídá nule nebo více výskytům s preferencí nejkratší shody.+?Nenenasytná (non-greedy) varianta
+, odpovídá jednomu nebo více výskytům s preferencí nejkratší shody.|Odpovídá buď levému, nebo pravému podvzoru tohoto operátoru.
(...)Seskupení. Každá skupina zachytává (zachycený podřetězec lze získat metodou
match.group()).(?:...)Nezachytávající seskupení. Každá skupina se vyhodnocuje podle stejných pravidel jako běžné seskupení, ale nebude součástí objektu shody.
\dOdpovídá číslici. Ekvivalentní k
[0-9].\DOdpovídá nečíslici. Ekvivalentní k
[^0-9].\sOdpovídá bílému znaku. Ekvivalentní k
[ \t-\r].\SOdpovídá nebílému znaku. Ekvivalentní k
[^ \t-\r].\wOdpovídá „slovním znakům“ (pouze ASCII). Ekvivalentní k
[A-Za-z0-9_].\WOdpovídá ne-„slovním znakům“ (pouze ASCII). Ekvivalentní k
[^A-Za-z0-9_].\Escape znak. Jakýkoli jiný znak následující po zpětném lomítku, kromě výše uvedených, se bere doslovně. Například
\*je ekvivalentní doslovnému*(není považován za operátor*). Všimněte si, že\r,\natd. nejsou zpracovávány nijak speciálně a budou ekvivalentní doslovným písmenůmr,natd. Z tohoto důvodu se nedoporučuje používat pro regulární výrazy raw řetězce Pythonu (r""). Napříkladr"\r\n"použité jako regulární výraz je ekvivalentní"rn". Chcete-li najít znak CR následovaný LF, použijte"\r\n".
NENÍ PODPOROVÁNO:
počítané opakování (
{m,n})pojmenované skupiny (
(?P<name>...))pokročilejší tvrzení (
\b,\B)escapování speciálních znaků jako
\r,\n- místo toho použijte vlastní escapování Pythonuatd.
Příklad:
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', '', '']
Funkce¶
- re.compile(regex_str: str, flags: int = 0) 'regex'¶
Zkompiluje regulární výraz a vrátí objekt regex.
- re.search(regex_str: str, string: str) 'match | None'¶
Zkompiluje regex_str a vyhledá jej v řetězci string. Na rozdíl od
matchprohledá řetězec a najde první pozici, která odpovídá regulárnímu výrazu (která stále může být 0, pokud je regulární výraz ukotvený).
- re.sub(regex_str: str, replace: str | Callable, string: str, count: int = 0, flags: int = 0, /) str¶
Zkompiluje regex_str a vyhledá jej v řetězci string, nahradí všechny shody hodnotou replace a vrátí nový řetězec.
replace může být řetězec nebo funkce. Pokud je to řetězec, lze použít escape sekvence ve tvaru
\<number>a\g<number>k expanzi na odpovídající skupinu (nebo na prázdný řetězec u skupin bez shody). Pokud je replace funkce, musí přijímat jediný argument (shodu) a měla by vracet náhradní řetězec.Pokud je zadán nenulový count, nahrazování se zastaví po provedení tohoto počtu náhrad. Argument flags je ignorován.
Objekty regex¶
Zkompilovaný regulární výraz. Instance této třídy se vytvářejí pomocí re.compile().
- class re.regex
Objekt zkompilovaného regulárního výrazu vrácený funkcí
re.compile().- match(string: str, pos: int = 0, endpos: int | None = None) 'match | None'¶
Aplikuje tento zkompilovaný regulární výraz na řetězec string, ukotvený na začátku prohledávané oblasti, a vrátí objekt
match, neboNone, pokud regulární výraz neodpovídá. Toto je ekvivalent zkompilovaného vzoru promatchna úrovni modulu a je mnohem efektivnější, když se stejný vzor aplikuje na více řetězců.Volitelný parametr pos udává index v řetězci string, kde má prohledávání začít; výchozí hodnota je
0. Toto není zcela ekvivalentní řezání řetězce; znak vzoru'^'odpovídá na skutečném začátku řetězce a na pozicích těsně za znakem nového řádku, ale ne nutně na indexu, kde má prohledávání začít.Volitelný parametr endpos omezuje, jak daleko se řetězec string prohledává; bude to, jako by řetězec byl dlouhý endpos znaků, takže se prohledávají pouze znaky od pos po
endpos - 1. Pokud je endposNone(výchozí), prohledává se celý řetězec.
- search(string: str, pos: int = 0, endpos: int | None = None) 'match | None'¶
Prochází řetězec string a hledá první místo, kde tento zkompilovaný regulární výraz vytvoří shodu, a vrátí objekt
match, neboNone, pokud žádná pozice neodpovídá. Toto je ekvivalent zkompilovaného vzoru pro funkcisearch()na úrovni modulu a je mnohem efektivnější, když se stejný vzor aplikuje na více řetězců.Volitelný parametr pos udává index v řetězci string, kde má prohledávání začít; výchozí hodnota je
0. Toto není zcela ekvivalentní řezání řetězce; znak vzoru'^'odpovídá na skutečném začátku řetězce a na pozicích těsně za znakem nového řádku, ale ne nutně na indexu, kde má prohledávání začít.Volitelný parametr endpos omezuje, jak daleko se řetězec string prohledává; bude to, jako by řetězec byl dlouhý endpos znaků, takže se prohledávají pouze znaky od pos po
endpos - 1. Pokud je endposNone(výchozí), prohledává se celý řetězec.
- sub(replace: str | Callable, string: str, count: int = 0, flags: int = 0, /) str¶
Vyhledá tento zkompilovaný regulární výraz v řetězci string, nahradí všechny shody hodnotou replace a vrátí nový řetězec. Toto je ekvivalent zkompilovaného vzoru pro funkci
sub()na úrovni modulu a je mnohem efektivnější, když se stejný vzor aplikuje na více řetězců.replace může být řetězec nebo funkce. Pokud je to řetězec, lze použít escape sekvence ve tvaru
\<number>a\g<number>k expanzi na odpovídající skupinu (nebo na prázdný řetězec u skupin bez shody). Pokud je replace funkce, musí přijímat jediný argument (shodu) a měla by vracet náhradní řetězec.Pokud je zadán nenulový count, nahrazování se zastaví po provedení tohoto počtu náhrad. Argument flags je ignorován.
Objekty shody (match)¶
Objekt shody uchovává výsledek úspěšné shody.
- class re.match(regex_str: str, string: str)¶
Porovná regex_str s řetězcem string, ukotvený na začátku řetězce, a vrátí objekt shody, nebo
None, pokud neodpovídá. Toto je zkratka na úrovni modulu:re.match(regex_str, string)je ekvivalentníre.compile(regex_str).match(string).Stejný objekt shody vrací také
search(), metody zkompilovaného vzoruregex.match()/regex.search()a je předáván náhradní funkci používané vsub().