OmegaT 4.2 — Посібник користувача

# Додаток D. Регулярні вирази

Для пошуку чи налаштування правил сегментації в OmegaT використовуються регулярні вирази Java. Щоб дізнатися про них більше, дивіться документацію регулярних виразів Java. Нижче перелічені приклади використання та корисні посилання.

### Примітка

Цей розділ призначений для досвідчених користувачів OmegaT, яким треба налашувати свої особливі варіанти правил сегментації чи шукати в тексті складні конструкції.

Таблиця D.1. Регулярні вирази — прапорці

Вираз | ... спіймає
--- | ---
(?i) | Вмикає пошук без врахування регістру літер (типово шаблон враховує регістр).

Таблиця D.2. Регулярні вирази — символи

Вираз | ... спіймає
--- | ---
x | Символ x, за винятком...
\uhhhh | Символ із шістнадцятковим значенням 0xhhhh
\t | Символ табуляції «\u0009»
\n | Символ нового рядка «\u000A»
\r | Символ повернення каретки «\u000D»
\f | Символ зміни сторінки «\u000C»
\a | Символ звукового сигналу «\u0007»
\e | Символ Esc «\u001B»
\cx | Контрольний символ, що відповідає x
\0n | Символ із вісімковим значенням 0n (0 <= n <= 7)
\0nn | Символ із вісімковим значенням 0nn (0 <= n <= 7)
\0mnn | Символ із вісімковим значенням 0mnn (0 <= m <= 3, 0 <= n <= 7)
\xhh | Символ із шістнадцятковим значенням 0xhh

Таблиця D.3. Регулярні вирази — екранування

Вираз | ... спіймає
--- | ---
\ | Нічого не спіймає, але екранує наступний символ. Це потрібно, якщо вам треба ввести якийсь метасимвол — !$()*+.<>?[\]^{|} — уникаючи його інтерпретації як спеціального.
\\ | Наприклад, цей вираз зловить символ \.
\Q | Нічого не спіймає, але екранує всі символи до \E
\E | Нічого не спіймає, але закінчує блок екранованих символів, що розпочався із \Q

Таблиця D.4. Регулярні вирази — Класи символів для блоків та категорій Юнікоду

Вираз | ... спіймає
--- | ---
\p{InGreek} | Символ із грецького блоку (простий блок)
\p{Lu} | Велику літеру (проста категорія)
\p{Sc} | Символ валюти
\P{InGreek} | Будь-який символ, окрім як із грецького блоку (заперечення)
[\p{L}&&[^\p{Lu}]] | Будь-яку літеру, окрім великих (виключення)

Таблиця D.5. Регулярні вирази — класи символів

Вираз | ... спіймає
--- | ---
[abc] | a, b, або c (простий клас)
[^abc] | Будь-який символ, окрім a, b, чи c (заперечення)
[a-zA-Z] | Від a до z чи від A до Z, включно (діапазон)

Таблиця D.6. Регулярні вирази — попередньо визначені класи символів

Вираз | ... спіймає
--- | ---
. | Будь-який символ, окрім символів кінця рядка.
\d | Цифру: [0-9]
\D | Не цифру: [^0-9]
\s | Пробільний символ: [ \t\n\x0B\f\r]
\S | Непробільний символ: [^\s]
\w | Символ, який «може бути частиною слова»: [a-zA-Z_0-9]
\W | Символ, який «не може бути частиною слова»: [^\w]

Таблиця D.7. Регулярні вирази — межі

Вираз | ... спіймає
--- | ---
^ | Початок рядка
$ | Кінець рядка
\b | Межу «слова»
\B | Не межу «слова»

Таблиця D.8. Регулярні вирази — жадібні квантифікатори

Вираз | ... спіймає
--- | ---
X ? | X, один раз або жодного
X * | X, нуль чи більше разів
X + | X, один чи більше разів

### Примітка

жадібні квантифікатори ловлять максимальну можливу кількість елементів. Наприклад, a+ зловить aaa у aaabbb

Таблиця D.9. Регулярні вирази — ліниві (нежадібні) квантифікатори

Вираз | ... спіймає
--- | ---
X?? | X, один раз або жодного
X*? | X, нуль чи більше разів
X+? | X, один чи більше разів

### Примітка

ліниві квантифікатори ловлять мінімальну можливу кількість елементів. Наприклад, a+? зловить першу літеру a у aaabbb

Таблиця D.10. Регулярні вирази — логічні оператори

Вираз | ... спіймає
--- | ---
XY | X за яким іде Y
X|Y | X чи Y
(XY) | XY як одну групу

## Інструменти для роботи з регулярними виразами та приклади використання

Існує багато інтерактивних інструментів для розробки та тестування регулярних виразів. Загалом вони працюють за такою схемою: регулярний вираз (запис зверху) аналізує текст (текстове поле посередині) і видає результати у нижньому текстовому полі. (Приклад із RegExr.com)

Рисунок D.1. RegExr

The Regex Coach доступний у Windows, Linux, FreeBSD як окрема програма. Він працює в цілому так само як на попередньому прикладі.

Непогана підбірка прикладів використання регулярних виразів є у самій OmegaT (див. Налаштування > Сегментація). Перелік регулярних виразів, які можуть бути корисні для пошуку у проєкті:

Таблиця D.11. Регулярні вирази — приклади регулярних виразів у перекладах

вираз | спіймає
--- | ---
(\b\w+\b)\s\1\b | повтори слів
[\.,]\s*[\.,]+ | кому чи крапку, після якої через пробіл іде ще одна кома чи крапка
\. \s+$ | пробіли після крапки у кінці рядка
\s+a\s+[aeiou] | В англійській мові слова, що починаються на голосні, як правило мають перед собою артикль «an», а не «a»
\s+an\s+[^aeiou] | В англійській мові: те саме, але для приголосних («a», а не «an»)
\s{2,} | більш ніж один пробіл
\.[A-Z] | Крапку, після якої іде велика літера — можливо, пропущений пробіл між крапкою та новим реченням
\bis\b | пошук цілого слова «is», але не «this» чи «isn’t» тощо.