Руководство пользователя ОмегаТ 3.0

Регулярные выражения

При поиске и создании правил сегментации используются регулярные выражения, поддерживаемые платформой Java. Более подробную информацию можно найти в документации Java. Ниже приведены несколько примеров и ссылок.

Примечание

Этот раздел предназначен для опытных пользователей, которым требуется создавать собственные правила сегментации или использовать сложные и мощные функции поиска.

Таблица 20. Регулярные выражения - Модификаторы
Выражение ... соответствует
(?i) Включает поиск совпадений независимо от регистра символов (по умолчанию все шаблоны чувствительны к регистру)

Таблица 21. Регулярные выражения - Символы
Выражение ... соответствует
x Символ «x», за исключением следующих случаев…
\uhhhh Символ с шестнадцатеричным значением 0xhhhh
\t Символ табуляции («\u0009»)
\n Символ новой строки («\u000A»)
\r Символ возврата каретки («\u000D»)
\f Символ конца страницы (команда подачи страницы для принтера) («\u000C»)
\a Символ звонка (оповещения) («\u0007»)
\e Символ Escape («\u001B»)
\cx Управляющий символ, соответствующий «x»
\0n Символ с восьмеричным значением 0n (0 ≤ n ≤ 7)
\0nn Символ с восьмеричным значением 0nn (0 ≤ n ≤ 7)
\0mnn Символ с восьмеричным значением 0mnn (0 ≤ m ≤ 3, 0 ≤ n ≤ 7)
\xhh Символ с шестнадцатеричным значением 0xhh

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

Таблица 23. Регулярные выражения - Классы блоков и категорий Юникода
Выражение ... соответствует
\p{InGreek} Символ из греческого блока (простой блок)
\p{Lu} Прописная буква (см. категории)
\p{Sc} Обозначение денежной единицы
\P{InGreek} Любой символ, кроме символов из греческого блока (исключение)
[\p{L}&&[^\p{Lu}]] Любая буква, кроме прописных (исключение)

Таблица 24. Регулярные выражения - Наборы символов
Выражение ... соответствует
[abc] a, b, или c (простой набор)
[^abc] Любой символ кроме a, b, или c (исключение)
[a-zA-Z] Любые символы латинского алфавита, от a до z и от A до Z включительно

Таблица 25. Регулярные выражения - Предустановленные наборы символов
Выражение ... соответствует
. Любой символ (кроме символов конца строки)
\d Цифра: [0-9]
\D Не цифра: [^0-9]
\s Любой пробельный символ: [ \t\n\x0B\f\r]
\S Любой не пробельный символ: [^\s]
\w Любой буквенный или цифровой символ, а также знак подчёркивания: [a-zA-Z_0-9]
\W Любой символ кроме буквенного и цифрового, а также знака подчёркивания: [^\w]

Таблица 26. Регулярные выражения - Границы
Выражение ... соответствует
^ Начало строки
$ Конец строки
\b Граница слова
\B Не граница слова

Таблица 27. Регулярные выражения - Жадные кванторы
Выражение ... соответствует
X ? X, один раз или ни разу
X * X, ноль или более раз
X + X, один или более раз

Примечание

жадные кванторы будут искать как можно больше совпадений. Например, a+ для последовательности aaabbb выдаст «ааа».

Таблица 28. Регулярные выражения - Ленивые кванторы
Выражение ... соответствует
X?? X, один раз или ни разу
X*? X, ноль или более раз
X+? X, один или более раз

Примечание

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

Таблица 29. Регулярные выражения - Логические операторы
Выражение ... соответствует
XY X, за которым идёт Y
X|Y Либо X, либо Y
(XY) XY как отдельная группа

Инструменты для работы с регулярными выражениями и примеры использования

Существует несколько программ для разработки и тестирования регулярных выражений. В общем и целом они работают по одному и тому же принципу (пример работы программы Regular Expression Tester смотри ниже): регулярное выражение (в верхнем поле) применяется к некоему тексту (в поле посередине), результаты работы показываются в нижнем поле.

Рисунок 15. Regex Tester
Regex Tester

Программа The Regex Coach для Windows, GNU/Linux и FreeBSD. Работает по описанному выше принципу.

Большое количество полезных примеров регулярных выражений можно найти и в самой ОмегаТ (смотри «Параметры» > «Сегментация»). В списке ниже приведены регулярные выражения, которые могут оказаться полезными при поиске по памяти перевода:

Таблица 30. Регулярные выражения - Примеры использования регулярных выражений при поиске по переводам
Регулярное выражение Результат поиска:
(\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» и т. д.