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.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().