网页编辑器中的正则表达式支持受限于 Lucene Regex 引擎的实现。
要使用正则表达式,请在筛选设置中启用 。筛选输入字段中的绿色勾号表示有效正则表达式的成功验证。
查询默认情况下不区分大小写。在筛选设置中启用 以使其区分大小写。
(确保仅匹配完整单词而不是较长单词中的子字符串)不可用。
查询 ^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”。 -
\(\?=|\(\?!|\(\?<=|\(\?<!- 前瞻和后顾,例如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.*便宜得多。
如果模式被拒绝,尝试使其更具针对性:从较长的固定前缀开始,然后逐步缩小范围。考虑减少替代项的数量,或将它们分开处理,而不是将所有内容合并为一个复杂的正则表达式。
示例:
-
[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以提取票据编号(例如,从到) -
过滤
(cat|dog)并替换$1-$1以复制匹配的文本(例如,从cat到cat-cat,从dog到dog-dog) -
可选组:过滤
你好(, (\w+))?并替换嗨 $1以通过替换名字前的“你好”或单独的“你好”来转换问候(例如,从到,从到)