Редакторы CAT

Regex в веб-редакторе (TMS)

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

Поддержка regex в веб-редакторе ограничена реализацией системы Lucene Regex.

Чтобы использовать regex, включите Совпадение с использованием regex в настройки фильтра. Зеленая галочка в поле ввода фильтра указывает на успешную проверку допустимого regex.

Запросы по умолчанию нечувствительны к регистру. Включите Совпадение с учетом регистра в настройки фильтра, чтобы сделать их чувствительными к регистру.

Совпадение слов (обеспечивающее совпадение только полных слов, а не подстрок внутри более длинных слов) недоступно.

Запрос ^abc$ будет работать как ожидается, т. е. обеспечивать совпадение всего сегмента, в то время как abc будет находить совпадение подстроки abc в любом тексте.

Ограничения

Правильная замена частично отформатированных запросов не поддерживается, например, поиск "Jméno: $1, Příjmení: $2." в тексте "First name<}: Bob, Last name: Dylan." будет заменен на “{>Jméno: Bob, Příjmení: Dylan

Неподдерживаемые шаблоны

  • Якорь границы слова \b, используемый для совпадения точных слов (работает в редакторе для компьютера).

  • \\[1-9] — обратные ссылки (\1, \2 и т. д.), например, (\w+)\s+\1 для совпадения дублирующихся слов, таких как “hello hello”

  • \(\?=|\(\?!|\(\?&lt;=|\(\?&lt;! — опережающие и ретроспективные проверки, например, cat(?=\.jpg) для совпадения “cat” только в “cat.jpg”

  • \(\?: — незахватывающие группы, например, (?:Mr|Mrs|Ms)\. \w+,, но захватывающие группы (Mr|Mrs|Ms)\. \w+ поддерживаются и находят совпадения для имен, таких как “Mrs. Smith”, “Mr. Brown”

  • \(\?# — встроенные комментарии, например, \d{4}-(?# year)\d{2}-(?# month)\d{2}(?# day) для совпадения “2025-06-25”

  • \(\?P<[^>]+> — именованные группы захвата, например, (?P<amount>\d+)\s?(?P<currency>USD|EUR) для совпадения “150 USD” и “99 EUR”

Использование

Базовое совпадение шаблонов

Точка (.) как заполнитель для любого одиночного символа

  • c.at: Совпадения: “chat”, “coat”. НЕ является совпадением: “cat”, “cheat”

  • wa.ter: Совпадения: “waiter”, “waster”. НЕ является совпадением: “water”

  • s.ip: Совпадения: “skip”, “ship”, “slip”. НЕ является совпадением: “sip”, “strip”

Квантификаторы

? - Ноль или одно вхождение

  • colou?r: Совпадения: “color”, “colour”

  • g?rain: Совпадения: “grain”, “rain”

  • books?: Совпадения: “book”, “books”

.* - Любое количество символов (включая отсутствие)

  • h.*y: Совпадения: “happy”, “history”, “honey”

  • sa.*d: Совпадения: “sad”, “sand”, “satisfied”

  • m.*ing: Совпадения: “morning”, “meeting”, “marketing”

.+ - Должен присутствовать как минимум один символ

  • pa.+er: Совпадения: “paper”, “painter”

  • a.+ed” Совпадения: “asked”, “accepted”, “allowed”

* - Ноль или более вхождений

  • go*al: Совпадения: “goal”, “goooooooal”

+ — Одно или более вхождений

  • no+: Совпадение: “no”, “noooooo”

  • $1+: Совпадение: “$1”, “$11”, “$111”

Рекомендуется использовать максимально конкретный шаблон, так как открытые шаблоны могут вызвать проблемы с производительностью в редактор.

Важно

В редактор есть встроенное ограничение на сложность шаблона регулярного выражения. Шаблоны, которые являются слишком широкими или активно используют подстановочные знаки, могут быть отклонены как неверные регулярные выражения. Чтобы избежать этого:

  • Делайте шаблоны короткими и конкретными. error-[0-9]\{3\} — это хорошо; .*a.*b.*c.*d.* — нет.

  • Минимизируйте использование подстановочных знаков. Каждый .+ или .* умножает внутреннюю сложность. По возможности отдавайте предпочтение классам символ, таким как [A-Z]+, вместо .*.

  • Избегайте длинных альтернатив с повтор. Шаблон вроде (word1|word2|...|word20){2,} может быстро превысить лимит. Это усиливается, когда альтернативы включают несколько слов или знаков препинания, что увеличивает сложность регулярного выражения.

  • По возможности фиксируйте одну сторону. ^prefix.* гораздо менее затратен, чем .*middle.*.

Если шаблон отклонен, попробуйте сделать его более целевым: начните с более длинного фиксированного префикса и сужайте область поиска оттуда. Рассмотрите возможность сокращения количества альтернатив или их обработки в отдельных шаблонах вместо объединения всего в одно сложное регулярное выражение.

Пример:

Фильтрация для электронная почта:

  • Этот шаблон будет находить пробелы и все окружающие слова, что потенциально приведет к слишком большому количеству совпадение: .*@.*

  • Чтобы ограничить результаты всеми адресами электронная почта: [\\w.+\\-]+@[\\w.+\\-]+

  • Чтобы ограничить результаты только адресами электронной почты .com: [\\w.+\\-]+@[\\w.+\\-]\\.com

  • Чтобы ограничить результаты теми, у которых есть цифра в адресах электронной почты: [\\w.+\\-]*\\d+[\\w.+\\-]*@[\\w.\\-]+

Альтернативы (оператор ИЛИ)

  • cat|dog: совпадение с «cat» и «dog»

  • red|blue|green: совпадение с «red», «blue», «green»

Классы символов и диапазоны

  • [A-Z]+: совпадение с одной или несколькими заглавными буквами подряд (последовательность).

  • [A-Z]{2,}: совпадение с любой серией заглавных букв (полезно, например, для поиска акронимов или Strings, написанных заглавными буквами)

  • [0-9]\{4\}: совпадение с четырехзначными числами, например «1999», «2003», «1876» (также находится внутри строки длиннее четырех символов; чтобы ограничить результаты, следует использовать опцию «Match words», запланированную на будущее)

  • [A-Za-z0-9]+: совпадение с любой буквенно-цифровой строкой (hello! → hello будет соответствовать, но ! не является частью [A-Za-z0-9]; 100% → будет соответствовать только 100)

  • ([A-Za-z]+\\d+|\\d+[A-Za-z]+): строгое совпадение с комбинацией цифр и букв, например «user123», «Admin99», «Win11», «5g», «1080p»

  • [0-9]{2,4}-[A-Z]{2,3}: совпадение с номерными знаками, например “12-XY”, “9999-ABC”

Экранирование зарезервированных символов . ? * { } [ ] ( ) \" \\

  • \\+[0-9]{1,2}: совпадение с «+40», «+1»

  • \\{version: [0-9]+\\}: совпадение с «{version: 12}», «{version: 13}»

  • C:\\\\[A-Za-z]+: совпадение с «C:\\Users», C:\\Documents, «C:\\Desktop»

Фильтрация с учетом и без учета регистра

  • По умолчанию фильтрация регулярными выражениями будет реализована без учета регистра. c.at: совпадение с «chat», «Chat», «CHAT» и «coat», «Coat», «COAT»

  • регулярное выражение можно комбинировать с Учетом регистра фильтровать пользовательского интерфейса

Группы захвата

Группы захвата регулярных выражений распознаются, и полный запрос подсвечивается, например, s(e)g подсветит \"seg\". Группы захвата можно использовать для замены, например, \"Name: Bob\" можно найти с помощью Name: (.*?) и заменить, используя обратную ссылку на Jméno: $1\". Отсутствующие обратные ссылки обрабатываются корректно, т.е. запрос Name: (.*?) с Заменить Jméno: $1, Title: $2 будет заменен как Jméno: Bob, Title: $2.

Примеры для Заменить обратной ссылки:

  • фильтровать (\\d+),(\\d+) и Заменить $1.$2 для нормализации десятичных разделителей (например, с 5,6 или 35,949 на 5.6 или 35.949)

  • фильтровать (\\d+)\\.(\\d+) и Заменить $1,$2 для нормализации десятичных разделителей (например, с 5.6 или 35.949 на 5,6 или 35,949)

  • фильтровать (\\d\{4\})-(\\d\{2\})-(\\d\{2\}) и Заменить $3/$2/$1 для переформатирования даты (например, с 2025-06-05 на 05/06/2025)

  • фильтровать Идентификатор-(\\d{3,}) и Заменить Ticket #$1 для извлечения номера заявки (например, из Идентификатор-45321 в Ticket #45321)

  • фильтровать (cat|dog) и Заменить $1-$1 для того, чтобы Дублировать найденный текст (например, из cat в cat-cat и из dog в dog-dog)

  • Необязательная группа: фильтровать Hello(, (\\w+))? и Заменить Hi $1 для преобразования приветствий путем замены \"Hello\" перед именами или отдельно (например, из Hello, John в Hi John и из Hello в Hi)

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

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.