Poniżej opisane są podstawowe operatory wyrażeń regularnych.
Podstawowe metaznaki
Metaznakami określa się znaki specjalne, których użycie sprawia że do jednego wzorca, może wystąpić wiele różnych dopasowań. Poniżej kilka podstawowych metaznaków:
1 |
. ^ $ * + ? { } [ ] \ | ( ) |
Co w przypadku, gdy metaznak chcemy użyć jako zwykły znak? Należy wówczas poprzedzić go backslashem „\”.
Przykład:
1 |
\+ |
[ ]
Dopasowanie do zbioru zakresów znaków. Zbiory można definiować przez pojedyncze znaki. Np.
1 |
[abc] |
Dopasuje się do znaku a lub b lub c.
Poza pojedynczymi znakami, można podawać tutaj też zbiory znaków. Wybrane zbiory znaków:
- a-z – małe litery alfabetu od a do z. Można tez podać krótszy zakres alfabetu. Np a-c, gdzie zakres znaków będzie taki sam jak w przypadku wzorca [a-z]
- A-Z – takie samo dopasowanie jak w przypadku a-z, z tą różnicą że dotyczy dużych liter
- 0-9 – zakres cyfr od 0 do 9. Tutaj tez można określić mniejszy zakres. Np. 0-3 – cyfry 1, 2 lub 3
Zakresy i pojedyncze znaki w nawiasach kwadratowych można mieszać.
1 |
[x2-4a-c] |
Powyższy wzorzec będzie pasował do znaków: x, 2, 3, 4, a, b, c.
^
Gdy zastosujemy ten znak na początku zbioru zakresów, to dopasowanie będzie dotyczyło wszystkich znaków, z wyjątkiem tych zdefiniowanych przez zbiór zakresu.
1 |
[^abc] |
Powyższa reguła dopasuje każdy znak z wyjątkiem liter a, b, c
Predefiniowane zbiory
Zbiory te umożliwiają prostszy zapis definicji niektórych zbiorów. Można traktować je jako skróty.
Predefiniowany zbiór | Opis | Odpowiednik |
---|---|---|
\d | Cyfry | [0-9] |
\D | Wszystkie znaki z wyjątkiem cyfr | [^0-9] |
\s | Białe znaki (np. spacje, tabulatory, znaki nowej linii) | [ \t\n\r\f\v] |
\S | Wszystkie znaki z wyjątkiem białych znaków | [^ \t\n\r\f\v] |
\w | Znaki alfanumeryczne (cyfry, litery i _) | [a-zA-Z0-9_] |
\W | Wszystkie znaki z wyjątkiem alfanumerycznych | [^a-zA-Z0-9_] |
Powtarzalność
Powyżej opisane możliwości wyrażeń regularnych pozwalają zrobić dopasowanie do wybranego znaku. Co jednak w przypadku gdy zajdzie potrzeba dopasowania do wielu znaków z danego zbioru? Z pomocą tutaj przychodzą operatory powtórzeń:
- * – powtórzenie 0 lub więcej razy. Jest to powtórzenie chciwe
- + – powtórzenie 1 lub więcej razy
- ? – 0 lub 1 wystąpienie
- {m, n} – od m do n wystąpień. Można pominąć jedną z liter
Umieszczenie takiego operatora za zbiorem, określa ile razy ma wystąpić dopasowanie do danego zbioru.
1 |
[abc]* |
Dopasowanie będzie działało dla każdego ciągu znaków, w którym występują znaki a, b, c
Na uwagę zasługuje fakt, iż dopasowanie jest „zachłanne”, co oznacza że wyrażenie regularne (jeśli tylko może) będzie próbowało dopasować się do jak największej ilości znaków.
Powtarzalność zachłanna lub niezachłanna
Powtarzalność w wyrażeniach regularnych domyślnie jest zachłanna (wyrażenie regularne próbuje dopasować jak najdłuższy ciąg znaków). Można ustawić powtarzalność niezachłanną, dodając znak zapytania, bezpośrednio po operatorze powtórzenia:
- *?
- +?
- ??
- {m,n}?
Więcej na temat wyrażeń regularnych znajdziesz w dokumentacji Pythona
Źródła: