CAT 编辑器

网页编辑器中的正则表达式 (TMS)

文本由 Phrase Language AI 从英语机器翻译而得。

网页编辑器中的正则表达式支持受限于 Lucene Regex 引擎的实现。

要使用正则表达式,请在筛选设置中启用 使用正则表达式匹配。筛选输入字段中的绿色勾号表示有效正则表达式的成功验证。

查询默认情况下不区分大小写。在筛选设置中启用 区分大小写匹配 以使其区分大小写。

匹配单词(确保仅匹配完整单词而不是较长单词中的子字符串)不可用。

查询 ^abc$ 将按预期工作,即匹配整个句段,而 abc 将匹配任何文本中的子字符串 abc

限制

不支持部分格式化查询的正确替换,例如在文本 "\{b\>名字<}: Bob, \{biu\>姓氏\<biu\}: Dylan." 中搜索 "Jméno: $1, Příjmení: $2." 将被替换为“{>Jméno: Bob, Příjmení: Dylan\<b\}”。

不支持的模式

  • 单词边界锚点 \b 用于匹配确切单词(在桌面编辑器中有效)。

  • \\[1-9] - 反向引用 (\1, \2 等),例如 (\w+)\s+\1 用于匹配重复的单词,如“hello hello”。

  • \(\?=|\(\?!|\(\?&lt;=|\(\?&lt;! - 前瞻和后顾,例如 cat(?=\.jpg) 仅在“cat.jpg”中匹配“cat”。

  • \(\?: - 非捕获组,例如 (?: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: 匹配: “聊天”, “外套”。不匹配: “猫”, “欺骗”

  • wa.ter: 匹配: “服务员”, “浪费者”。不匹配: “水”

  • s.ip: 匹配: “跳过”, “船”, “滑倒”。不匹配: “小口”, “条纹”

量词

? - 零次或一次出现

  • colou?r: 匹配: “颜色”, “色彩”

  • g?rain: 匹配: “谷物”, “雨”

  • books?: 匹配: “书”, “书籍”

.* - 任意数量的字符(包括零个)

  • h.*y: 匹配: “快乐”, “历史”, “蜂蜜”

  • sa.*d: 匹配: “伤心”, “沙子”, “满意”

  • m.*ing: 匹配: “早晨”, “会议”, “市场营销”

.+ - 至少必须出现一个字符

  • pa.+er: 匹配: “纸”, “画家”

  • a.+ed 匹配: “询问”, “接受”, “允许”

* - 零次或多次出现

  • go*al: 匹配: “目标”, “去去去去去去去目标”

+ - 一次或多次出现

  • 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,}:匹配任何一系列大写字母(对于匹配缩略词或用大写字母书写的字符串很有用)

  • [0-9]{4}:匹配四位数字,例如。"1999"、"2003"、"1876"(也可以在超过四位数字的字符串中找到;要限制结果,未来计划的匹配单词选项应使用)

  • [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"。捕获组可以用于替换,例如“姓名:Bob”可以通过姓名: (.*?)进行搜索,并使用反向引用替换为姓名: $1。”缺失的反向引用会被优雅地处理,即查询姓名: (.*?)与替换姓名: $1, 职称: $2将被替换为姓名: Bob, 职称: $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)

  • 过滤ID-(\d{3,})并替换票据 #$1以提取票据编号(例如,从ID-45321票据 #45321

  • 过滤(cat|dog)并替换$1-$1以复制匹配的文本(例如,从cat到cat-cat,从dog到dog-dog)

  • 可选组:过滤你好(, (\w+))?并替换嗨 $1以通过替换名字前的“你好”或单独的“你好”来转换问候(例如,从你好,约翰嗨 约翰,从你好

这篇文章有帮助吗?

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.