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 | 小写字母。 | |
| 可打印字符,即非控制字符。 | ||
| 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