正则表达式语法
正则表达式是一种更强大(因此也更复杂)的通配符模式匹配形式。 与 标准模式匹配 一样,它们可以在整个 Opus 中使用。 通常,您必须在特定情况下专门启用正则表达式的使用 - 默认情况下,Opus 将假定为标准模式匹配。 例如,高级重命名 对话框有一个正则表达式模式,您必须先选择它才能使用正则表达式。
正则表达式优于标准模式匹配的一个优势是,它们可以在某些函数中启用一种搜索和替换形式。 例如,这在 Rename 命令中使用。 “搜索”字符串被指定为与文件原始名称匹配的模式。 该模式可以指示 捕获组 - 源字符串中被捕获的表达式,并且可以被带到新字符串(作为“替换”字符串)中。 例如,假设 Rename 对话框设置为正则表达式模式,并提供以下模式:
旧名称: The (.*) Backup\\(.*)
新名称: \1.\2
旧名称 字符串中的两个 (.*) 标记是捕获组 - 它们“捕获”与括号内的表达式匹配的任何内容。 在这种情况下,括号内的表达式是 .*,它只是表示“匹配任何内容”。 因此,此模式将匹配任何以 The 开头并以 Backup 结尾的文件名,并将捕获文件名的中间部分以供以后使用。 第二个 (.*) 将捕获文件扩展名。 然后,新名称 字符串可以重复使用捕获的文本,这用 \1 和 \2 标记表示。 因此,例如,原始文件名 The Lord Of The Rings Backup.avi 将被重命名为 Lord Of The Rings.avi。 \1 指的是第一个捕获组,\2 指的是第二个,依此类推。
如果您需要 新名称 字符串包含文字 \,请连续使用两个 \。 例如,abc\\xyz
将变为 abc\xyz
。
仅当与 Rename 命令一起使用时,旧名称 模式后可以跟一个 # 字符,以指示应重复多次搜索和替换操作。 例如,以下正则表达式重命名将删除文件名中的所有空格:
旧名称: (.*)\s(.*)#
新名称: \1\2
# 会导致搜索和替换重复进行,直到新名称不再更改。 您还可以通过附加一个数字来指定最大重复次数,例如,末尾的 #5 将重复该操作不超过五次。
正则表达式有很多不同的变体; 默认情况下,Opus 使用的是所谓的 TR1 ECMAScript。 Microsoft 有一个 关于 TR1 的页面,该页面比本帮助文件更详细。
^
字符串的开头. 插入符号用于将搜索“锚定”到字符串的开头。 如果搜索没有锚定到任何一端,则该模式可以匹配目标的子字符串。
例如: ^abc 匹配 abc、abcdefg、abc123,但不匹配 123abc abc 也匹配 123abc
$
字符串的结尾. 美元符号用于将搜索“锚定”到字符串的结尾。 如果搜索没有锚定到任何一端,则该模式可以匹配目标的子字符串。
例如: abc$ 匹配 abc、endsinabc、123abc,但不匹配 abc123 ^abc(.*)123$ 匹配 abc123、abcxyz123,但不匹配 abcxyz123def
.
任何单个字符. 句点(句号)用于匹配任何单个字符。
例如: a.c 匹配 abc、aac、acc、adc,但不匹配 acd
*
0 个或多个前面的表达式. 匹配零个或多个出现的前面表达式。 与 . 组合形成“匹配任何内容”标记 (**.*)。
例如: ab*c 匹配 ac、abc、abbc、abbbc,... a.*c 匹配 ac、abc、a123456c、aanythingc,... .* 匹配任何内容
+
1 个或多个前面的表达式. 匹配一个或多个出现的前面表达式。
例如: ab+c 匹配 abc、abbc、abbbc,但不匹配 ac
?
0 个或 1 个前面的表达式. 匹配零个或一个出现的前面表达式。
例如: ab?c 匹配 ac、abc,但不匹配 abbc 或 abbbc
|
交替(逻辑 或). 竖线用于分隔两个或多个字符或表达式,其中任何一个都可以匹配。
例如: a|b 匹配 a 或 b a(b|c)d 匹配 abd 或 acd (bill|ted) 匹配 bill 或 ted
{}
量词. 大括号用于表示前面的表达式必须匹配确切的次数。
例如: ab{2}c 匹配 abbc,但不匹配 abc 或 abbbc a.{4}z 匹配 abcdez、a1234z、afourz、aaaaaz 等。
[]
字符集. 匹配指定字符集中任何单个字符。 您可以将字符集指定为单个字符(例如 [abdfg])或字符范围(例如 [a-j])或多个范围。
例如: [abc] 匹配 a、b 或 c [af-j] 匹配 a、f、g、h 或 j [a-dh-kq-] 匹配 a、b、c、d、h、i、j、k 或从 q 开始的任何字符 IMGP[0-9]{4}.jpg 匹配 IMGP0158.jpg(或任何其它四位数)。
[^]
否定字符集. 匹配不在指定字符集中的任何字符。 有关如何定义集合的信息,请参见 []。
例如: [^pqr] 匹配除 p、q 或 r 之外的任何字符
()
表达式 / 捕获组. 括号用于将多个字符组合成一个表达式。 当在“搜索和替换”中使用时(如高级重命名),它们还标记捕获组 - 有关这些内容的讨论,请参见上文。
例如: a|bc 匹配 ac 或 bc,而 a|(bc) 匹配 a 或 bc
\
转义字符. 反斜杠用于转义标记字符,以便按字面匹配这些字符。 当在非标记字符之前使用时,它用于指示以下特殊转义字符:
制表符 ($09)
回车符 ($0d)
\v
垂直制表符 ($0b)
\f
换页符 ($0c)
换行符 ($0a)
\e
转义符 ($1b)
\x
匹配指定为两位十六进制数的 ASCII 字符,例如 \x20 匹配空格
\u
匹配指定为四位十六进制数的 Unicode 字符,例如 \u0020 匹配空格。
它还用于标记几个字符类,它们是用简写方式指定各种常见 [] 字符集(见下文)。
例如: a|b 匹配 a 或 b,而 a\b 匹配 a|b\ a 匹配 a 后跟一个制表符,而 a 匹配 a
制表符 ($09)
回车符 ($0d)
\v
垂直制表符 ($0b)
\f
换页符 ($0c)
换行符 ($0a)
\e
转义符 ($1b)
\x
匹配指定为两位十六进制数的 ASCII 字符,例如 \x20 匹配空格
\u
匹配指定为四位十六进制数的 Unicode 字符,例如 \u0020 匹配空格。
\w
单词字符. 匹配任何单词字符。 等效于 [a-zA-Z_0-9]。
例如: ^\w+[0-9]{4}.jpg 匹配 IMGP0158.jpg(或任何其它前面至少有一个其它单词字符的四位数)。
\W
非单词字符. 匹配任何非单词字符,等效于 [^a-zA-Z_0-9]。
\s
空格字符. 匹配任何空白字符。 等效于 [ \f\n\r\t\v]。
\S
非空格字符. 匹配任何非空白字符。 等效于 [^ \f\n\r\t\v]。
\d
数字字符. 匹配任何十进制数字。 等效于 [0-9]。
\D
非数字字符. 匹配任何非十进制数字。 等效于 [^0-9]。
例如: ^\D+d{4}.jpg 匹配 IMGP0158.jpg(或任何其它前面至少有一个非数字字符的四位数)。
最后更新于