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

Регулярное выражение (TMS)

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

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

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

Регулярные выражения можно использовать в полях «фильтровать», «искать» и «Заменить» в CAT Editor, в полях оригинала и перевода функции поиска контента, функции «преобразовать в теги» в настройках импорта файлов и для настройки сегментации. Конвертер и CAT Desktop Editor используют Java регулярное выражение, в то время как CAT Web Editor и поиск в TMS используют систему Lucene регулярное выражение.

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

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

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

Важно

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

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

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

Пример

Описание

<[^>]+>

представляет <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}} и конвертирует его в теги

\{\{[^\}]+\}\}

представляет текст между скобками {{}}

\([^\)]+\)

представляет текст между скобками ()

\^[^\^]+\^

представляет текст между знаками ^

\@[^\@]+\@

представляет текст между знаками @

\^[^\^\?]+\?

представляет текст между знаками ^ и ?

\'[^']+\'

представляет текст между апострофами ' '

\"[^"]+\"

представляет текст между кавычками \"\"

\%[^\%]+\%

представляет текст между символами %

\$\{[^}]*\}

представляет текст между ${ и }, например ${переменная}

\$[a-zA-Z0-9\-_]+

представляет строку, которая начинается с $, например $appName

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

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

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

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

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

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

(.*)=

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

=(.*)

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

\/\/\S*

представляет гиперссылки. Также, 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]+`

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

`[\u00a8\u00b9\u00c4]+`

Одно или несколько вхождений указанных символов Unicode внутри квадратных скобок, например \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.