Регулярное выражение (сокращенно regex или regex) — это последовательность символов, образующих шаблон поиска в основном для использования при сопоставлении шаблонов со строками или при сопоставлении строк. Функциональные возможности аналогичны операциям «найти и заменить» с большей сложностью и специфичностью, или методам исключения определенного контента. Подробное описание regex и таблицу используемых символов вы найдете в статье Википедии.
Чтобы использовать несколько regex одновременно, вставьте символ | между ними.
Regex можно использовать в полях «фильтровать», «искать» и «заменить» в редакторе CAT, в полях оригинала и перевода функции поиска контента, для функции в настройках импорта файлов и для настройки правил сегментации. Конвертер и редактор для компьютера CAT используют Java regex, в то время как веб-редактор CAT и поиск в TMS используют движок Lucene regex.
Рекомендации
Чат-боты искусственного интеллекта (ИИ) могут быть очень эффективными в генерации и подтверждении regex.
Используйте инструменты, такие как Regex101, чтобы протестировать regex с различными входными данными.
Важно
Phrase поддерживает Java regex, но отклонит сложные регулярные выражения, чтобы защитить систему от перегрузок. Сложные regex — это те, которые содержат кванторы (кроме притяжательных) в группах, содержащих другие кванторы (кроме притяжательных).
Примеры преобразования текста в теги при импорте файлов и использования regex в редакторе для компьютера для функций фильтрации и поиска и замены:
|
Пример |
Описание |
|---|---|
|
<[^>]+> |
представляет <html_tag> |
|
\{[^\}]+\} |
представляет {variable}, |
|
\[[^\]]+\] |
представляет собой [variable], |
|
\[\[.+?\]\] |
представляет [[aa[11]bb]]. |
|
\$[^\$]+\$ |
представляет $operator_Name1$. |
|
\d+ |
представляет собой числа. Также, [0-9]+ |
|
[A-Za-z0-9] |
представляет собой любой буквенно-цифровой символ. |
|
.+\@.+\..+ |
адрес электронной почты — name@domain.com |
|
\d{4}[-]\d{2}[-]\d{2} |
дата 2018-08-01 |
|
\s$ |
пробел в конце сегмента |
|
^\s |
пробел в начале сегмента |
|
\s\s |
двойной пробел |
|
^\d |
цифра в начале сегмента |
|
\w+\s\s\w+ |
двойной пробел между словами |
|
\s\n |
новая строка, которой предшествует любой символ пробела |
|
\S\n |
новая строка, которой предшествует любой символ без пробелов |
|
<[^>]+>|\$[^=]+= |
преобразует переменные php и html-код ($svariable['name'] =) |
|
^\s*\'[^:]+: |
преобразует ключ поля Javascript с добавленными пробелами в начале строки ( 'ключ' :) |
|
\{\{[^\}]+\}\}|\'[^']+\' |
не переводит контент {{text here}} '{{text here}} и конвертирует его в теги |
|
\{\{[^\}]+\}\} |
представляет текст между {{}} скобками |
|
\([^\)]+\) |
представляет текст между () скобками |
|
\^[^\^]+\^ |
представляет текст между ^ знаками |
|
\@[^\@]+\@ |
представляет текст между @ знаками |
|
\^[^\^\?]+\? |
представляет текст между ^ и ? знаками |
|
\'[^']+\' |
представляет текст между ' ' апострофами |
|
\"[^"]+\" |
представляет текст между "" кавычками |
|
\%[^\%]+\% |
представляет текст между символами % |
|
\$\{[^}]*\} |
представляет текст между ${ и }, например, ${variable} |
|
\$[a-zA-Z0-9\-_]+ |
представляет строку, которая начинается с $, например, $appName |
|
(?<=\: ").*(?=") |
представляет текст внутри двойных кавычек после двоеточия и пробела, например, |
|
(?<=\: ').*(?=') |
представляет текст внутри одинарных кавычек после двоеточия и пробела, например, |
|
(?<=\=).*(?=) |
представляет текст после знака равенства и без пробела, например, key=value |
|
(.*)= |
представляет текст перед знаком равенства |
|
=(.*) |
представляет текст после знака равенства |
|
\/\/\S* |
представляет гиперссылки. Also, https:\/\/\S* |
|
</?mrk[^>]*> |
представляет открытые и закрытые |
Примечание
Поскольку TXT файлы в TMS обрабатываются построчно, определенные регулярные выражения, которые работают в других средах, могут не работать так, как ожидалось.
Примеры регулярных выражений при импорте определенного текста:
-
## ErrorMessage ##1## The number must be higher than 0. ##Z##
Чтобы импортировать текст между ##1## и ##Z## , используйте регулярное выражение:
(?<=##1## ).*(?= ##Z##) -
'errorMessage' («Число должно быть выше 0.»)
Чтобы импортировать текст между (" и ") , используйте регулярное выражение:
(?<=\(").*(?="\)) -
'errorMessage' = «Число должно быть выше 0».
Чтобы импортировать текст после знака = и между ' и ' , используйте регулярное выражение:
(?<=\= ').*(?=') -
errorMessage = «это нужно перевести»
Чтобы импортировать текст после знака = и между 'и' используйте регулярное выражение:
(?<=\= ").*(?=") -
msgstr ("Число должно быть выше 0.")
Чтобы импортировать строки msgstr в одноязычных файлах PO, используя фильтр TXT, используйте регулярное выражение:
(?<=msgstr ").*(?=") -
# Примечание: Это примечание
Чтобы исключить строки, начинающиеся с # , используйте регулярное выражение:
(^[^#].*) -
значения '126', 'DCeT', 'Text (en)'
Чтобы импортировать только текст в кавычках и с (en), например текст (en)' используйте регулярное выражение:
(?<=')[^']*\(en\)(?=')
Пример структуры JSON:
{
"list": {
"id": "1",
"value": "text 1 for translation."
},
"text": {
"id": "2",
"value": "text 2 for translation."
},
"menu": {
"id": "3",
"value": "text 3 for translation."
},"array": ["blue","green"],"arrays": [{ "color": "blue", "title": "BLUE"
}, { "color": "green", "title": "GREEN" } ]}
-
для импорта каждого значения независимо от уровня используйте:
(^|.*/)value -
для импорта только одного значения из списка используйте:
list/value -
для импорта значения из списка и/или меню используйте | (ИЛИ)
list/value|menu/value -
для импорта только первого экземпляра значения из меню используйте:
menu\[1\]/value -
для импорта контента массива JSON после определенного ключа используйте:
(^|.*/)array\[.*\] -
чтобы импортировать контент определенного массива объектов, используйте:
(^|.*/)arrays\[.*\].*
Пример файла YAML:
title: A
text: translate A
categories:
title: B
text: translate B
categories:
title: C
text: translate C
categories:
content:
title: D
text: translate D
регулярное выражение для импорта:
-
только 'translate A' :
text -
только 'translate C':
categories\[2\]/text -
только 'translate D':
categories\[\d+\]/content[\1\]/text -
весь текст:
text|categories\[\d+\]/text|categories\[\d+\]/content[\d+\]/text
Okapi, Java и Unicode используются для правил сегментации в файлах .SRX.
Использование регулярных выражений в файлах .SRX - задача сложная, и перед попыткой работы с ними рекомендуется иметь базовые знания об использовании регулярных выражений.
Правила запрета разрыва (сокращения и т.д.) и правила разрыва (конец предложения с точкой и т.д.) находятся в файлах .SRX.
|
Пример |
Описание |
|---|---|
|
[\p{C}] |
Невидимый управляющий символ. |
|
[\p{Z}] |
Пробел |
|
[\p{Lu}] |
Прописная буква, имеющая вариант нижнего регистра. |
|
[\p{N}] |
Любые цифровые символы. |
|
\Q ... \E |
Начало и конец цитаты - (\QApprox.\E). Используется для сокращений. |
|
\t |
Табулятор |
|
\n |
Новая строка |
|
\u2029 |
Разделитель абзацев |
|
\u200B |
Пробел нулевой ширины |
|
\u3002 |
Идеографическая точка |
|
\ufe52 |
Небольшая точка |
|
\uff0e |
Точка полной ширины |
|
\uff61 |
Идеографическая точка половинной ширины |
|
\ufe56 |
Небольшой вопросительный знак |
|
\uff1f |
Знак вопроса полной ширины |
|
\u203c |
Двойной восклицательный знак |
|
\u2048 |
Восклицательный знак вопроса |
|
\u2762 |
Усиленный восклицательный знак |
|
\u2763 |
Усиленный восклицательный знак с сердцем |
|
\ufe57 |
Небольшой восклицательный знак |
|
\uff01 |
Восклицательный знак полной ширины |
|
`[\u0080-\uFFFF]+` |
Символы из диапазона Юникода \u0080 до \uFFFF |
|
`[\u00a8\u00b9\u00c4]+` |
Одна или несколько последовательностей указанных символов Юникода внутри квадратных скобок, например \u00a8 + \u00b9 + \u00c4 |
|
Проверка контроля качества (QA) |
Исходное регулярное выражение |
Регулярное выражение перевода |
|---|---|---|
|
Дополнительные цифры в переводе |
|
|
|
Порядок тегов (непарный, для сегментов с 3 тегами). Настройте регулярное выражение в соответствии с необходимым количеством тегов. |
|
|
|
Порядок тегов (парный, для сегментов с 3 тегами). Настройте регулярное выражение в соответствии с необходимым количеством тегов. |
|
|
|
Пробелы перед тегами |
|
|
|
Пробелы после тегов |
|
|
|
Нет пробела перед тегами |
|
|
|
Символы без пробелов после парных тегов |
|
|
|
Отсутствуют квадратные скобки |
|
|
|
Отсутствуют круглые скобки |
|
|
|
Используйте следующие регулярные выражения, чтобы проверить одинаковое количество идентичных десятичных чисел, используя соответствующий десятичный разделитель, специфичный для языка. |
|
|