Regular Expression - ściągawka
Moja ściągawka Regular Expression (zapewne tylko do użytku własnego)…
Głównie dotyczy Notepad++ - zob. Notepad++ User Manual - Searching
Znaki specjalne
Dla znajdź (» PerlRegExp)
.[{}()\*+?|^$
Czasem zalecane jest też traktowanie ]
jako znaku specjalnego
W zbiorze znaków “jeden z” lub “żaden z” po [
lub [^
…
]\-^
, przy czym -
na początku lub końcu i ^
nie-na-początku nie jest zn. specjalnym
Dla zamień (» PerlRegExp repl.)
$\()?:
Opisy na tej stronie
Wyrażenia regularne są pokazywane jako kod z podświetleniem, które pozwala zauważyć spacje, np. poniżej mamy kolejno a<spacja>
i a
:
a
a
Aby wyraźnie zaznaczyć, że część “zamień na” ma być pusta, stosowany będzie znak ¤
np.:
¤
Dla operacji “Znajdź i zamień” będą stosowane zawsze 2 wiersze. Powyższy przykład to zamiana spacji na “nic”.
Gdy chodzi o wyrażenia tylko dla “Znajdź”, to będzie 1 wiersz abo 3+ .
Różne przykłady
- Usuwanie całych wierszy, które nie zaczynają się od “abc” (łącznie z końcem wiersza)
^(?=abc).*\R
¤
\R
ro uniwersalny znak końca wiersza
czyli (?>\r\n|\n|\x0B|\f|\r|\x85|\x{2028}|\x{2029})
, np. 2 znaki \r\n
(Windows) lub 1 znak \n
(Unix).
Nie może być używany wewnątrz [...]
.
- Znajdź cały wiersz, który nie kończy się na “xyz” (w tym pusty)
^.*(?<!xyz)$
- Dowolny ciąg znaków obejmujący także znaki końca wiersza (przydatne w javascript)
[\s\S]*
- Sklejanie pojedynczych liter z kolejnym wyrazem - zamiana na spację nierozdzielającą \xA0 ([Alt+0160]) spacji (1+) poprzedzonej jedną z liter ‘awizou’, po której następuje początek wyrazu:
(?<=\<[awizou]) +\<
\xA0
- Kompletne usuwanie tagu HTML (tu
<(\S+) ...<\/\1>
) z zadanym fragmentem nazwy klasy o ile nie zawiera zagnieżdżeń takich samych tagów jak tag(\S+)
.
<(\S+) class="[^"]*FragmentNazwyKlasy[^>]*>(.*?)<\/\1>
¤
- Scalenie akapitów, np. skopiowanych z PDF - gdy faktyczny podział akapitu wyznacza pusty wiersz, a inne łamania wierszy wewnątrz akapitu należy zamienić na spację. Tzn. mamy pojedyncze łamanie wiersza
\r?\n
z opcjonalną dodatkową spacją?
poprzedzone nie-białym znakiem(?<=\S)
i występującym po łamaniu wiersza nie-białym znakiem(?=\S)
:
(?<=\S) ?\r?\n(?=\S)
- https://www.regular-expressions.info/
- https://regex101.com/ - testowanie
- Regular_Expressions -> developer.mozilla.org
-
Wyrażenia regularne, Marcin Kuta, AGH (obecnie niedostępne - tu kopia w formacie MarkDown): RegEx-Marcin_Kuta,_AGH.md …html
- zob. też: Przydatne znaki unicode