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
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» тощо.