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

Regexp (TMS)

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

Регулярное выражение (сокращенно regexp или regexp) — это последовательность символов, образующих шаблон поиска в основном для использования при сопоставлении шаблонов со строками или при сопоставлении строк. Функциональные возможности аналогичны операциям «найти и заменить» с большей сложностью и специфичностью, или методам исключения определенного контента. Подробное описание регулярного выражения и таблицу используемых символов вы найдете в статье Википедии.

Чтобы использовать несколько регулярных выражений одновременно, вставьте символ | между ними.

Регулярные выражения можно использовать в полях «фильтровать», «искать» и «заменить» в редакторе для компьютера CAT, в полях оригинала и перевода функции поиска контента, функции «Преобразовать в теги» в настройках импорта файлов и для настройки правил сегментации.

Рекомендация

Чат-боты искусственного интеллекта (ИИ) могут быть очень эффективными в генерации и подтверждении регулярных выражений (regexp).

Используйте Инструменты типа Regex101 для проверки регулярных выражений с разными исходными данными.

ВАЖНО:

Phrase поддерживает Java regexp, но отклонит сложные стандартные выражения, чтобы защитить систему от перегрузок. Сложные регулярные выражения — это регулярные выражения с кванторами (кроме притяжательных) в группах, которые содержат другие кванторы (кроме притяжательных).

Общие примеры

Примеры преобразования текста в теги при импорте файлов и использования regexp в редакторе для функций поиска и замены:

Пример

Описание

<[^>]+>

представляет <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

(?&lt;=\: ").*(?=")

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

(?&lt;=\: ').*(?=')

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

(?&lt;=\=).*(?=)

представляет собой текст после знака равенства и без каталога, например ключ=значение

(.*)=

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

[^=]*$

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

\/\/\S*

представляет собой гиперссылки. Также, https:\/\/\S*

</?mrk[^&gt;]*>

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

\b[\p{Lu}]+\b

представляет собой целые слова заглавными буквами

Импорт 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. # Note: Это примечание

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

  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:

название: A
text: translate A
categories:
  название: B
  text: translate B
categories:
  название: C
  text: translate C
categories:
  content:
      название: 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.

Использование regexp в файлах .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]+`

Символы из диапазона Unicode от \u0080 до \uFFFF

`[\u00a8\u00b9\u00c4]+`

Одно или несколько повторов указанных символов Юникода в квадратных скобках, например: \u00a8 + \u00b9 + \u00c4

Общий пользовательский контроль качества (QA)

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

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

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

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

\d 

\d 

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

Настроить regexp в соответствии с необходимым количеством тегов.

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

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

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

Настроить regexp в соответствии с необходимым количеством тегов.

^.*\{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

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

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

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

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

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

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

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

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.