При поиске и создании правил сегментации используются регулярные выражения, поддерживаемые платформой Java. Более подробную информацию можно найти в документации Java. Ниже приведены несколько примеров и ссылок.
Этот раздел предназначен для опытных пользователей, которым требуется создавать собственные правила сегментации или использовать сложные и мощные функции поиска.
Таблица 16.1. Регулярные выражения - Модификаторы
| Выражение | ... соответствует |
|---|---|
| (?i) | Включает поиск совпадений независимо от регистра символов (по умолчанию все шаблоны чувствительны к регистру) |
Таблица 16.2. Регулярные выражения - Символы
| Выражение | ... соответствует |
|---|---|
| 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 |
Таблица 16.3. Регулярные выражения - Экранирование
| Выражение | ... соответствует |
|---|---|
| \ | не соответствует ничему, только экранирует следующий за ним символ. Это нужно, если вы хотите ввести метасимволы !$()*+.<>?[\]^{|} в качестве их буквальных значений. |
| \\ | Например, это будет обратная косая черта. |
| \Q | не соответствует ничему, только экранирует все символы вплоть до \E |
| \E | не соответствует ничему, только прекращает экранирование, начатое \Q |
Таблица 16.5. Регулярные выражения - Наборы символов
| Выражение | ... соответствует |
|---|---|
| [abc] | a, b, или c (простой набор) |
| [^abc] | Любой символ кроме a, b, или c (исключение) |
| [a-zA-Z] | Любые символы латинского алфавита, от a до z и от A до Z включительно |
Таблица 16.6. Регулярные выражения - Предустановленные наборы символов
| Выражение | ... соответствует |
|---|---|
| . | Любой символ (кроме символов конца строки) |
| \d | Цифра: [0-9] |
| \D | Не цифра: [^0-9] |
| \s | Любой пробельный символ: [ \t\n\x0B\f\r] |
| \S | Любой не пробельный символ: [^\s] |
| \w | Любой буквенный или цифровой символ, а также знак подчёркивания: [a-zA-Z_0-9] |
| \W | Любой символ кроме буквенного и цифрового, а также знака подчёркивания: [^\w] |
Таблица 16.7. Регулярные выражения - Границы
| Выражение | ... соответствует |
|---|---|
| ^ | Начало строки |
| $ | Конец строки |
| \b | Граница слова |
| \B | Не граница слова |
Таблица 16.8. Регулярные выражения - Жадные кванторы
| Выражение | ... соответствует |
|---|---|
| X? | X, один раз или ни разу |
| X* | X, ноль или более раз |
| X+ | X, один или более раз |
жадные кванторы будут искать как можно больше совпадений. Например, a+ для последовательности aaabbb выдаст «ааа».
Таблица 16.9. Регулярные выражения - Ленивые кванторы
| Выражение | ... соответствует |
|---|---|
| X?? | X, один раз или ни разу |
| X*? | X, ноль или более раз |
| X+? | X, один или более раз |
ленивые кванторы будут искать как можно меньше совпадений. Например, a+? для последовательности aaabbb выдаст только a.
Таблица 16.10. Регулярные выражения - Логические операторы
| Выражение | ... соответствует |
|---|---|
| XY | X, за которым идёт Y |
| X|Y | Либо X, либо Y |
| (XY) | XY как отдельная группа |
Существует несколько программ для разработки и тестирования регулярных выражений. В общем и целом они работают по одному и тому же принципу (пример работы программы Regular Expression Tester смотри ниже): регулярное выражение (в верхнем поле) применяется к некоему тексту (в поле посередине), результаты работы показываются в нижнем поле.
Программа The Regex Coach для Windows, GNU/Linux и FreeBSD. Работает по описанному выше принципу.
Большое количество полезных примеров регулярных выражений можно найти и в самой ОмегаТ (смотри «Параметры» > «Сегментация»). В списке ниже приведены регулярные выражения, которые могут оказаться полезными при поиске по памяти перевода:
Таблица 16.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» и т. д. |