To jest druga część wpisu dotyczącego wyrażeń regularnych. Pierwszą część znajdziesz tutaj.
| – operator OR
Dopasowane może być wyrażenie znajdujące się zarówno przed operatorem, jak również po nim.
1 |
pies|kot |
Wyrażenie będzie pasowało zarówno do ciągu „pies”, jak również do ciągu „kot”.
Oczywiście można również zastosować bardziej zaawansowane wyrażenia.
( ) – grupowanie wyrażeń
W nawiasach zapisujemy grupy wyrażeń regularnych. Mają one podobne zastosowanie jak, w matematyce.
1 |
(pies|kot)\s(biegnie|skacze) |
Powyższe wyrażenie będzie pasowało do następującego tekstu:
- pies biegnie
- pies skacze
- kot biegnie
- kot skacze
^ – początek linii
Umieszczenie tego znaku na początku wyrażenia sprawia że wyrażenie regularne szuka dopasowania tylko od początku linii.
1 |
^(pies|kot)\s(biegnie|skacze) |
To wyrażenie, w przeciwieństwie do poprzedniego, nie będzie pasowało do tekstu „Mój pies biegnie” ponieważ znak ^ wymusza aby dopasowanie zaczynało się od początku linii. Natomiast, po początku linii jest słowo „Mój”, które nie pasuje do dalszej części wyrażenia regularnego.
$ – koniec linii
Działa w analogiczny sposób, do znaku ^. Oczywiście znak $ ustawia się na końcu wyrażenia
1 |
(pies|kot)\s(biegnie|skacze)$ |
\A – dopasowuje się do początku znaku ciągów
Działa dokładnie tak samo jak ^. Jednak w przypadku trybu MULTILINE (analizowany jest cały tekst, a nie jedna linia), dopasowuje się tylko do początku ciągu znaków. Natomiast ^ dopasuje się do każdego miejsca gdzie występuje znak nowej linii.
\Z – dopasowanie do końca ciągu znaków
Działa analogicznie jak \Z z tą różnicą że dotyczy końca ciągu znaków. Ma również analogiczne zależności z $.
\b – dopasowanie do początku i końca słowa
Przez słowo należy rozmieć ciąg znaków alfanumerycznych
1 |
\b(\w+)\b |
Powyższe wyrażenie dopasuje się do każdego słowa.
\B – negacja \b
Dopasowuje się do każdego znaku nie będącego początkiem lub końcem słowa.
\1 – odwołanie do ostatnio znalezionej grupy ()
Czasem może zaistnieć potrzeba kilkukrotnego zastosowania kilkukrotnie tej samej grupy w wyrażeniu regularnym. Aby nie zwielokrotniać tej grupy, można użyć skrótu do ostatnio użytej grupy. Szczególnie może to ułatwiać pisanie wyrażeń regularnych, przy grupach które mają skomplikowaną pisownię.
1 |
\b(\w+)\s+\1\b |
Tutaj skrót \1 wskazuje na ostatnio użytą grupę czyli (\w+). Dopasowanie to wykryje powtarzające się po spacji słowa. Np. w zdaniu „mój pies biegnie biegnie” wychwyci „biegnie biegnie”.
(?=…)
Wyrażenie dopasowuje łańcuch znaków, jeśli bezpośrednio po nim następuję wyrażenie … Na uwagę zasługuje fakt, iż znaki pasujące do wyrażenia … nie są zwracane w dopasowaniu.
1 |
xy(?=ab) |
Powyższe wyrażenie regularne dopasuje będzie odpowiadało ciągowi znaków xyab, ale w jako rezultat działania wyrażenia dostaniemy xy.
Inaczej to wyrażenie można traktować że jeśli po xy jest ab, to wówczas zwróć xy.
(?!…)
Wyrażenie jest negacją wyrażenia (?=…).
1 |
xy(?!ab) |
Powyższe wyrażenie zostanie spełnione tylko jeśli bezpośrednio po xy nie będzie znaków ab, czyli prawdziwe będzie np. dla ciągu „xycd”. Oczywiście jako dopasowanie zostaną zwrócone tylko znaki „xy” (podobnie jak w przypadku (?=…))
(?<=…)
Podobne działanie jak w przypadku (?=…). Różnica polega na tym, że dopasowuje łańcuch znaków gdy bezpośrednio przed nim występuje wyrażenie …
1 |
(?<=ab)xy |
Wyrażenie będzie spełnione gdy „ab” będzie występowało bezpośrednio przed xy.
(?<!…)
Negacja (?<=…). Działa w analogiczny sposób
Źródła:
https://docs.python.org/3.6/library/re.html#re-syntax