Импортировать утилиты

Regex (TMS)

Контент автоматически переведен с английского языка с помощью Phrase Language AI.

Регулярное выражение (сокращенно 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

(?<=\: ").*(?=")

представляет текст внутри двойных кавычек после двоеточия и пробела, например, value в строке "key": "value"

(?<=\: ').*(?=')

представляет текст внутри одинарных кавычек после двоеточия и пробела, например, JohnDoe в строке user: 'JohnDoe'

(?<=\=).*(?=)

представляет текст после знака равенства и без пробела, например, key=value

(.*)=

представляет текст перед знаком равенства

=(.*)

представляет текст после знака равенства

\/\/\S*

представляет гиперссылки. Also, https:\/\/\S*

</?mrk[^>]*>

представляет открытые и закрытые mrk теги HTML/XML, например, <mrk id="abc"> и </mrk>

Импорт TXT

Примечание

Поскольку TXT файлы в TMS обрабатываются построчно, определенные регулярные выражения, которые работают в других средах, могут не работать так, как ожидалось.

Примеры регулярных выражений при импорте определенного текста:

  1. ## ErrorMessage ##1## The number must be higher than 0. ##Z##

    Чтобы импортировать текст между ##1## и ##Z## , используйте регулярное выражение: (?<=##1## ).*(?= ##Z##)

  2. 'errorMessage' («Число должно быть выше 0.»)

    Чтобы импортировать текст между (" и ") , используйте регулярное выражение: (?<=\(").*(?="\))

  3. 'errorMessage' = «Число должно быть выше 0».

    Чтобы импортировать текст после знака = и между ' и ' , используйте регулярное выражение: (?<=\= ').*(?=')

  4. errorMessage = «это нужно перевести»

    Чтобы импортировать текст после знака = и между 'и' используйте регулярное выражение: (?<=\= ").*(?=")

  5. msgstr ("Число должно быть выше 0.")

    Чтобы импортировать строки msgstr в одноязычных файлах PO, используя фильтр TXT, используйте регулярное выражение: (?<=msgstr ").*(?=")

  6. # Примечание: Это примечание

    Чтобы исключить строки, начинающиеся с # , используйте регулярное выражение: (^[^#].*)

  7. значения '126', 'DCeT', 'Text (en)'

    Чтобы импортировать только текст в кавычках и с (en), например текст (en)' используйте регулярное выражение: (?<=')[^']*\(en\)(?=')

Импорт JSON

Пример структуры 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

Пример файла 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)

Проверка контроля качества (QA)

Исходное регулярное выражение

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

Дополнительные цифры в переводе

\d 

\d 

Порядок тегов (непарный, для сегментов с 3 тегами).

Настройте регулярное выражение в соответствии с необходимым количеством тегов.

^.*\{1\}.*\{2\}.*\{3\}.*$

^.*\{1\}.*\{2\}.*\{3\}.*$

Порядок тегов (парный, для сегментов с 3 тегами).

Настройте регулярное выражение в соответствии с необходимым количеством тегов.

^.*\{1\>.*\<1\}.*\{2\>.*\<2\}.*\{3\>.*\<3\}.*$

^.*\{1\>.*\<1\}.*\{2\>.*\<2\}.*\{3\>.*\<3\}.*$

Пробелы перед тегами

\s(\{[1-9][0-9]*\}|\{[1-9][0-9]*>|<[1-9][0-9]*\}|\{[biu_\^]{1,4}>|<[biu_\^]{1,4}\})

\s(\{[1-9][0-9]*\}|\{[1-9][0-9]*>|<[1-9][0-9]*\}|\{[biu_\^]{1,4}>|<[biu_\^]{1,4}\})

Пробелы после тегов

(\{[1-9][0-9]*\}|\{[1-9][0-9]*>|<[1-9][0-9]*\}|\{[biu_\^]{1,4}>|<[biu_\^]{1,4}\})\s

(\{[1-9][0-9]*\}|\{[1-9][0-9]*>|<[1-9][0-9]*\}|\{[biu_\^]{1,4}>|<[biu_\^]{1,4}\})\s

Нет пробела перед тегами

\S(\{[1-9][0-9]*\}|\{[1-9][0-9]*>|<[1-9][0-9]*\}|\{[biu_\^]{1,4}>|<[biu_\^]{1,4}\})

\S(\{[1-9][0-9]*\}|\{[1-9][0-9]*>|<[1-9][0-9]*\}|\{[biu_\^]{1,4}>|<[biu_\^]{1,4}\})

Символы без пробелов после парных тегов

((\{[1-9][0-9]*>)|(<[1-9][0-9]*\}))\S

((\{[1-9][0-9]*>)|(<[1-9][0-9]*\}))\S

Отсутствуют квадратные скобки

[^\[\]]*\[[^\[\]]*\][^\[\]]* 

[^\[\]]*\[[^\[\]]*\][^\[\]]* 

Отсутствуют круглые скобки

[^\(\)]*\([^\(\)]*\)[^\(\)]* 

[^\(\)]*\([^\(\)]*\)[^\(\)]* 

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

(?<;n1>;\d+)\.(?<;n2>;\d+)

(?<;n1>;\d+),(?<;n2>;\d+)

Была ли эта статья полезной?

Sorry about that! In what way was it not helpful?

The article didn’t address my problem.
I couldn’t understand the article.
The feature doesn’t do what I need.
Other reason.

Note that feedback is provided anonymously so we aren't able to reply to questions.
If you'd like to ask a question, submit a request to our Support team.
Thank you for your feedback.