Renamer 插件中的正则表达式

Renamer 插件的正则表达式比 Sally 查找和内部查看器更强大,扩展了 Henry Spencer 出色的 REGEXP 库。请先阅读 Sally 的正则表达式语法,再了解受 Perl 启发的 Renamer 扩展。

扩展语法

  • '*?'——'*' 的非贪婪形式,匹配 0 次或更多次
  • '+?'——'+' 的非贪婪形式,匹配 1 次或更多次
  • '??'——'?' 的非贪婪形式,匹配 0 次或 1 次
  • '$'——位于表达式末尾时,匹配行尾,或末尾换行符之前的位置
  • '( )'——将括号内表达式组合为一个表达式,并捕获匹配子串,参见此示例
  • '(?: )'——与 '( )' 类似,但不捕获匹配子串

注意:“非贪婪”表示尽可能少地匹配。

零宽断言

支持以下零宽断言。它们不匹配任何字符,而是测试条件是否为真:

断言 含义
\b 匹配单词边界。
\B 匹配非单词边界。
\A 仅匹配字符串开头。
\Z 仅匹配字符串末尾,或末尾换行符之前的位置。
\z 仅匹配字符串末尾。
(?= ) 正向先行断言,例如 'j(?=ohn)' 匹配 'john' 中的 'j',但不匹配 'june' 中的 'j'。
(?! ) 负向先行断言,例如 'j(?!ohn)' 匹配 'june' 中的 'j',但不匹配 'john' 中的 'j'。
(?<= ) 正向后行断言,例如 '(?<=joh)n' 匹配 'john' 中的 'n',但不匹配 'joan' 中的 'n'。
(?<! ) 负向后行断言,例如 '(?<!joh)n' 匹配 'joan' 中的 'n',但不匹配 'john' 中的 'n'。

在字符类中,"\b" 表示退格,而非单词边界。

POSIX 字符类

可使用以下 POSIX 字符类:

类 等价反斜杠形式 含义
alpha 字母字符。
alnum 字母和数字字符。
ascii ASCII 字符。
cntrl 控制字符。
digit \d 十进制数字。
graph 可打印且可见的字符;空格可打印但不可见。
lower 小写字母。
print 可打印字符,即非控制字符。
punct 标点字符,即非字母、数字、控制字符或空白的字符。
space \s 空白字符,例如空格、TAB 和换页符。
upper 大写字母。
word \w 字母、数字及下划线 "_"。
xdigit 十六进制数字字符。

在类名前加 '^' 可对字符类取反。

用法:[[:alpha:]] 表示字母;[01[:alpha:]%] 表示字母及 0、1 和 %;[[:^digit:]] 表示除十进制数字之外的全部字符。

部分字符类的简写

可使用以下字符类简写:

类 含义
\w 字母、数字及下划线 "_"。
\W 除字母、数字和下划线 "_" 之外的全部字符。
\s 空白字符,例如空格、TAB 和换页符。
\S 除空格、TAB、换页符等空白字符之外的全部字符。
\d 十进制数字。
\D 除十进制数字之外的全部字符。

特殊字符

可使用以下特殊字符:

特殊字符 含义
\t 制表符
\n 换行符
\r 回车符
\f 换页符
\a 响铃
\b 退格
\x5A 编码值为十六进制 0x5A 的字符 'Z'

From the Sally manual (GPL-2.0-or-later), © 1997-2023 Open Salamander Authors; © 2025-2026 Elias Bachaalany. Source: manual source (zip) · original page in the Sally repository