正则表达式语法

正则表达式是一种更强大(因此也更复杂)的通配符模式匹配形式。 与 标准模式匹配 一样,它们可以在整个 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 匹配 abcabcdefgabc123,但不匹配 123abc abc 也匹配 123abc

$

字符串的结尾. 美元符号用于将搜索“锚定”到字符串的结尾。 如果搜索没有锚定到任何一端,则该模式可以匹配目标的子字符串。

例如: abc$ 匹配 abcendsinabc123abc,但不匹配 abc123 ^abc(.*)123$ 匹配 abc123abcxyz123,但不匹配 abcxyz123def

.

任何单个字符. 句点(句号)用于匹配任何单个字符。

例如: a.c 匹配 abcaacaccadc,但不匹配 acd

*

0 个或多个前面的表达式. 匹配零个或多个出现的前面表达式。 与 . 组合形成“匹配任何内容”标记 (**.*)。

例如: ab*c 匹配 acabcabbcabbbc,... a.*c 匹配 acabca123456caanythingc,... .* 匹配任何内容

+

1 个或多个前面的表达式. 匹配一个或多个出现的前面表达式。

例如: ab+c 匹配 abcabbcabbbc,但不匹配 ac

?

0 个或 1 个前面的表达式. 匹配零个或一个出现的前面表达式。

例如: ab?c 匹配 acabc,但不匹配 abbcabbbc

|

交替(逻辑 . 竖线用于分隔两个或多个字符或表达式,其中任何一个都可以匹配。

例如: a|b 匹配 ab a(b|c)d 匹配 abdacd (bill|ted) 匹配 billted

{}

量词. 大括号用于表示前面的表达式必须匹配确切的次数。

例如: ab{2}c 匹配 abbc,但不匹配 abcabbbc a.{4}z 匹配 abcdeza1234zafourzaaaaaz 等。

[]

字符集. 匹配指定字符集中任何单个字符。 您可以将字符集指定为单个字符(例如 [abdfg])或字符范围(例如 [a-j])或多个范围。

例如: [abc] 匹配 abc [af-j] 匹配 afghj [a-dh-kq-] 匹配 abcdhijk 或从 q 开始的任何字符 IMGP[0-9]{4}.jpg 匹配 IMGP0158.jpg(或任何其它四位数)。

[^]

否定字符集. 匹配不在指定字符集中的任何字符。 有关如何定义集合的信息,请参见 []

例如: [^pqr] 匹配除 pqr 之外的任何字符

()

表达式 / 捕获组. 括号用于将多个字符组合成一个表达式。 当在“搜索和替换”中使用时(如高级重命名),它们还标记捕获组 - 有关这些内容的讨论,请参见上文。

例如: a|bc 匹配 acbc,而 a|(bc) 匹配 abc

\

转义字符. 反斜杠用于转义标记字符,以便按字面匹配这些字符。 当在非标记字符之前使用时,它用于指示以下特殊转义字符:

制表符 ($09)

回车符 ($0d)

\v

垂直制表符 ($0b)

\f

换页符 ($0c)

换行符 ($0a)

\e

转义符 ($1b)

\x

匹配指定为两位十六进制数的 ASCII 字符,例如 \x20 匹配空格

\u

匹配指定为四位十六进制数的 Unicode 字符,例如 \u0020 匹配空格。

它还用于标记几个字符类,它们是用简写方式指定各种常见 [] 字符集(见下文)。

例如: a|b 匹配 ab,而 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(或任何其它前面至少有一个非数字字符的四位数)。

最后更新于