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)