re — proste wyrażenia regularne¶
Ten moduł implementuje operacje na wyrażeniach regularnych. Obsługiwana składnia wyrażeń regularnych jest podzbiorem modułu re z CPythona (a w praktyce jest podzbiorem rozszerzonych wyrażeń regularnych POSIX).
Obsługiwane operatory i sekwencje specjalne to:
.Dopasowuje dowolny znak.
[...]Dopasowuje zbiór znaków. Obsługiwane są pojedyncze znaki oraz zakresy, w tym zbiory zanegowane (np.
[^a-c]).^Dopasowuje początek łańcucha znaków.
$Dopasowuje koniec łańcucha znaków.
?Dopasowuje zero lub jedno wystąpienie poprzedniego podwzorca.
*Dopasowuje zero lub więcej wystąpień poprzedniego podwzorca.
+Dopasowuje jedno lub więcej wystąpień poprzedniego podwzorca.
??Niezachłanna wersja
?, dopasowuje zero lub jedno wystąpienie, preferując zero.*?Niezachłanna wersja
*, dopasowuje zero lub więcej wystąpień, preferując najkrótsze dopasowanie.+?Niezachłanna wersja
+, dopasowuje jedno lub więcej wystąpień, preferując najkrótsze dopasowanie.|Dopasowuje podwzorzec po lewej albo po prawej stronie tego operatora.
(...)Grupowanie. Każda grupa jest przechwytująca (przechwycony podłańcuch można uzyskać metodą
match.group()).(?:...)Grupowanie nieprzechwytujące. Każda grupa jest dopasowywana według tych samych reguł co zwykłe grupowanie, ale nie staje się częścią obiektu dopasowania.
\dDopasowuje cyfrę. Równoważne
[0-9].\DDopasowuje znak niebędący cyfrą. Równoważne
[^0-9].\sDopasowuje biały znak. Równoważne
[ \t-\r].\SDopasowuje znak niebędący białym znakiem. Równoważne
[^ \t-\r].\wDopasowuje „znaki słowne” (tylko ASCII). Równoważne
[A-Za-z0-9_].\WDopasowuje znaki niebędące „znakami słownymi” (tylko ASCII). Równoważne
[^A-Za-z0-9_].\Znak ucieczki. Dowolny inny znak następujący po ukośniku wstecznym, z wyjątkiem wymienionych powyżej, jest traktowany dosłownie. Na przykład
\*jest równoważne dosłownemu*(nie jest traktowane jako operator*). Należy zauważyć, że\r,\nitp. nie są obsługiwane w sposób szczególny i będą równoważne dosłownym literomr,nitd. Z tego powodu nie zaleca się używania surowych łańcuchów Pythona (r"") dla wyrażeń regularnych. Na przykładr"\r\n"użyte jako wyrażenie regularne jest równoważne"rn". Aby dopasować znak CR, po którym następuje LF, użyj"\r\n".
NIEOBSŁUGIWANE:
zliczane powtórzenia (
{m,n})nazwane grupy (
(?P<name>...))bardziej zaawansowane asercje (
\b,\B)ucieczki znaków specjalnych takie jak
\r,\n- zamiast tego użyj własnego mechanizmu ucieczki Pythonaitd.
Przykład:
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', '', '']
Funkcje¶
- re.compile(regex_str: str, flags: int = 0) 'regex'¶
Kompiluje wyrażenie regularne, zwraca obiekt regex.
- re.search(regex_str: str, string: str) 'match | None'¶
Kompiluje regex_str i wyszukuje go w string. W przeciwieństwie do
match, przeszukuje łańcuch w poszukiwaniu pierwszej pozycji pasującej do wyrażenia regularnego (która nadal może wynosić 0, jeśli wyrażenie regularne jest zakotwiczone).
- re.sub(regex_str: str, replace: str | Callable, string: str, count: int = 0, flags: int = 0, /) str¶
Kompiluje regex_str i wyszukuje go w string, zastępując wszystkie dopasowania wartością replace i zwracając nowy łańcuch.
replace może być łańcuchem znaków lub funkcją. Jeśli jest łańcuchem, można użyć sekwencji ucieczki w postaci
\<number>oraz\g<number>, które zostaną rozwinięte do odpowiedniej grupy (lub do pustego łańcucha dla niedopasowanych grup). Jeśli replace jest funkcją, musi przyjmować jeden argument (dopasowanie) i powinna zwracać łańcuch zastępczy.Jeśli podano niezerową wartość count, zastępowanie zostanie przerwane po wykonaniu tylu zamian. Argument flags jest ignorowany.
Obiekty regex¶
Skompilowane wyrażenie regularne. Instancje tej klasy tworzy się za pomocą re.compile().
- class re.regex
Obiekt skompilowanego wyrażenia regularnego zwracany przez
re.compile().- match(string: str, pos: int = 0, endpos: int | None = None) 'match | None'¶
Stosuje to skompilowane wyrażenie regularne do string, zakotwiczając je na początku obszaru wyszukiwania, i zwraca obiekt
matchlubNone, jeśli wyrażenie regularne nie pasuje. Jest to odpowiednik skompilowanego wzorca dla funkcjimatchpoziomu modułu i jest znacznie wydajniejszy, gdy ten sam wzorzec stosuje się do wielu łańcuchów.Opcjonalny parametr pos podaje indeks w string, od którego ma rozpocząć się wyszukiwanie; domyślnie wynosi
0. Nie jest to całkowicie równoważne wycinaniu łańcucha; znak wzorca'^'dopasowuje się na rzeczywistym początku łańcucha oraz na pozycjach tuż po znaku nowej linii, ale niekoniecznie na indeksie, od którego ma rozpocząć się wyszukiwanie.Opcjonalny parametr endpos ogranicza, jak daleko przeszukiwany jest string; zachowanie będzie takie, jakby łańcuch miał endpos znaków długości, więc przeszukiwane są tylko znaki od pos do
endpos - 1. Jeśli endpos wynosiNone(wartość domyślna), przeszukiwany jest cały łańcuch.
- search(string: str, pos: int = 0, endpos: int | None = None) 'match | None'¶
Skanuje string w poszukiwaniu pierwszego miejsca, w którym to skompilowane wyrażenie regularne daje dopasowanie, i zwraca obiekt
matchlubNone, jeśli żadna pozycja nie pasuje. Jest to odpowiednik skompilowanego wzorca dla funkcjisearch()poziomu modułu i jest znacznie wydajniejszy, gdy ten sam wzorzec stosuje się do wielu łańcuchów.Opcjonalny parametr pos podaje indeks w string, od którego ma rozpocząć się wyszukiwanie; domyślnie wynosi
0. Nie jest to całkowicie równoważne wycinaniu łańcucha; znak wzorca'^'dopasowuje się na rzeczywistym początku łańcucha oraz na pozycjach tuż po znaku nowej linii, ale niekoniecznie na indeksie, od którego ma rozpocząć się wyszukiwanie.Opcjonalny parametr endpos ogranicza, jak daleko przeszukiwany jest string; zachowanie będzie takie, jakby łańcuch miał endpos znaków długości, więc przeszukiwane są tylko znaki od pos do
endpos - 1. Jeśli endpos wynosiNone(wartość domyślna), przeszukiwany jest cały łańcuch.
- sub(replace: str | Callable, string: str, count: int = 0, flags: int = 0, /) str¶
Wyszukuje to skompilowane wyrażenie regularne w string, zastępując wszystkie dopasowania wartością replace i zwraca nowy łańcuch. Jest to odpowiednik skompilowanego wzorca dla funkcji
sub()poziomu modułu i jest znacznie wydajniejszy, gdy ten sam wzorzec stosuje się do wielu łańcuchów.replace może być łańcuchem znaków lub funkcją. Jeśli jest łańcuchem, można użyć sekwencji ucieczki w postaci
\<number>oraz\g<number>, które zostaną rozwinięte do odpowiedniej grupy (lub do pustego łańcucha dla niedopasowanych grup). Jeśli replace jest funkcją, musi przyjmować jeden argument (dopasowanie) i powinna zwracać łańcuch zastępczy.Jeśli podano niezerową wartość count, zastępowanie zostanie przerwane po wykonaniu tylu zamian. Argument flags jest ignorowany.
Obiekty dopasowania¶
Obiekt dopasowania przechowuje wynik udanego dopasowania.
- class re.match(regex_str: str, string: str)¶
Dopasowuje regex_str do string, zakotwiczając na początku łańcucha, i zwraca obiekt dopasowania lub
None, jeśli nie pasuje. Jest to skrót poziomu modułu:re.match(regex_str, string)jest równoważnere.compile(regex_str).match(string).Ten sam obiekt dopasowania jest również zwracany przez
search(), przez metody skompilowanego wzorcaregex.match()/regex.search(), oraz przekazywany do funkcji zastępującej używanej przezsub().