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.
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 |
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 |
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 |
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.
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. |