Dodatek D. Wyrażenia regularne

1. Narzędzia wyrażeń regularnych i przykłady ich użycia

Wyrażenia regularne (w skrócie regex) stosowane do operacji wyszukiwania są rozpoznawane i wspierane przez środowisko Java. Aby uzyskać więcej bardziej szczegółowych informacji, zapoznajmy się z dokumentacją Java Regex. Poniżej przedstawiono dodatkowe odniesienia z przykładami.

Notatka

Ten rozdział jest przeznaczony dla zaawansowanych użytkowników, którzy muszą zdefiniować własne warianty reguł segmentacji lub zbudować bardziej złożone i efektywne kombinacje wyszukiwania.

Tabela. D.1. Wyrażenia regularne - flagi

Konstrukcja ...pasuje do następującego
(?i) Rozpoczyna wyszukiwanie, które nie uwzględnia wielkich i małych liter (domyślnie w szablonie jest rozróżniana wielkość liter).

Tabela. D.2. Znaki wyrażeń regularnych

Konstrukcja ...pasuje do następującego
x Pasujący znak x, z następującymi wyjątkami...
\uhhhh Znak o wartości szesnastkowej 0xhhhh
\t Znak tabulacji ('\u0009')
\n Znak nowego wiersza (nowa linia) ('\u000A')
\r Znak powrotu karetki ('\u000D')
\f Znak podziału strony ('\u000C')
\a Znak alertu (dzwonek) ('\u0007')
\e Znak ucieczki (Esc) ('\u001B')
\cx Znak kontrolny odpowiadający x
\0n Znak o wartości ósemkowej 0n (0 <= n <= 7)
\0nn Znak o wartości ósemkowej 0nn (0 <= n <= 7)
\0mnn Znak o wartości ósemkowej 0mnn (0 <= m <= 3, 0 <= n <= 7)
\xhh Znak o wartości szesnastkowej 0xhh

Tabela D.3. Wyrażenia regularne - cytowanie

Konstrukcja ...pasuje do następującego
\ Nic, tylko zacytuj następujący znak. Jest to konieczne, jeżeli chcemy wprowadzić jeden z następujących metaznaków !$()*+.<>?[\]^{|} aby pasował tylko do siebie.
\\ Przykładowo ta kombinacja dopasowuje znak ukośnika odwrotnego (w tył ciach „\”).
\Q Nic, ale cytuj wszystkie znaki aż do \E
\E Nic, ale kończy cytat zaczynający się od \Q

Tablica D.4. Wyrażenia regularne - klasy dla kategorii i bloków Unicode

Konstrukcja ...pasuje do następującego
\p{InGreek} Jeden znak wewnątrz greckiego bloku (pojedynczy blok)
\p{Lu} Jedna wielka litera (pojedyncza kategoria)
\p{Sc} Symbol waluty
\P{InGreek} Dowolny znak oprócz tych w bloku greckim (negacja)
[\p{L}&&[^\p{Lu}]] Dowolna litera z wyjątkiem dużej litery (odejmowanie)

Tabela D.5. Wyrażenia regularne - klasy znaków

Konstrukcja ...pasuje do następującego
[abc] a, b, lub c (pojedyncza klasa)
[^abc] Dowolny znak z wyjątkiem a, b, lub c (negacja)
[a-zA-Z] od a do z lub od A do Z, włącznie (zakres)

Tabela D.6. Wyrażenia regularne - predefiniowane klasy znaków

Konstrukcja ...pasuje do następującego
. Dowolny znak (z wyjątkiem końcówek linii)
\d Cyfra: [0-9]
\D Nie cyfra: [^0-9]
\s Biały znak: [ \t\n\x0B\f\r]
\S Znak niebędący białym znakiem: [^\s]
\w Słowo jednoznakowe: [a-zA-Z_0-9]
\W Znak niebędący słowem: [^\w]

Tabela D.7. Wyrażenia regularne - specyfikatory limitów

Konstrukcja ...pasuje do następującego
^ Początek wiersza
$ Koniec wiersza
\b Granica słowa
\B Nie ustawiaj granicy słowa

Tabela. D.8. Wyrażenia regularne - kwantyfikatory zachłanne

Konstrukcja ...pasuje do następującego
X? X, jeden lub żaden
X* X, zero lub więcej razy
X+ X, jeden lub więcej razy

Notatka

kwantyfikatory zachłanne wykryją wszystkie możliwe wystąpienia znaku. Przykładowo, zapytanie a+ będzie odpowiadać wystąpieniu aaa w aaabbb.

Tabela D.9. Wyrażenie regularne - kwantyfikatory niechętne (niezachłanne)

Konstrukcja ...pasuje do następującego
X?? X, jeden lub żaden
X*? X, zero lub więcej razy
X+? X, jeden lub więcej razy

Notatka

kwantyfikatory niezachłanne dopasowują się dokładnie tak jak tylko mogą. Przykładowo, znak a+? będzie odpowiadać pierwszemu wystąpieniu a w słowie aaabbb.

Tabela D.10. Wyrażenia regularne - operatory logiczne

Konstrukcja ...pasuje do następującego
XY X po którym następuje Y
X|Y Albo X albo Y
(XY) XY jako pojedyncza grupa

1. Narzędzia wyrażeń regularnych i przykłady ich użycia

Istnieje kilka interaktywnych narzędzi przeznaczonych do tworzenia i testowania wyrażeń regularnych. Prawie wszystkie wykorzystują ten sam wzorzec (patrz poniżej przykład wzięty z Testera wyrażeń regularnych): wyrażenie regularne (górna pozycja) analizuje tekst do wyszukania (środkowa ramka), zwracane wyniki pokazane w polu wyników.

Rysunek D.1. Sprawdzanie wyrażeń regularnych

Sprawdzanie wyrażeń regularnych

Aby wykonać testy za pomocą niezależnego narzędzia, w wersjach dla FreeBSD, Linuksa, Maca i Windowsa należy skorzystać z programu The Regex Coach (trener wyrażeń regularnych). Działa prawie identycznie jak w powyższym przykładzie.

W programie OmegaT znajdziemy też niezły zbiór przydatnych przykładów zastosowania wyrażeń regularnych (Opcje → Segmentacja). Poniższa lista zawiera wyrażenia regularne, które mogą być przydatne podczas przeszukiwania pamięci tłumaczeń:

Tabela D.11. Przykłady użycia wyrażeń regularnych w tłumaczeniach

Wyrażenie regularne Znajduje następujące:
(\b\w+\b)\s\1\b Podwójne słowa
[\.,]\s*[\.,]+ przecinek lub kropka, po których następują spacje i jeszcze jeden przecinek lub kropka
\. \s+$ dodatkowe spacje po kropce na końcu wiersza
\s+a\s+[aeiou] Angielski: wyrazy zaczynające się od samogłosek muszą być zwykle poprzedzone „an”, a nie „a”
\s+an\s+[^aeiou] Angielski: taka sama kontrola jak powyżej, ale dla spółgłosek („a”, nie „an”)
\s{2,} więcej niż jedna spacja
\.[A-Z] Kropka, po której następuje duża litera - być może brakująca spacja między kropką a początkiem nowego zdania?
\bis\b wyszukaj „is”, nie „this” lub „isn't” itp.