正则表达式

 

正则表达式是一种功能非常强大的搜索工具。它让你能够搜索复杂的单词形式。正则表达式主要被专业人员使用,但对办公环境中查找某些文件也很有用(见下文的例子)。

 

Total Commander在以下功能中支持正则表达式:

- 命令 - 查找文件 (用于文件名和文件内容)

- Lister

- 批量重命名工具

- 选择文件对话框

 

正则表达式包括普通字符,特殊字符和所谓的元字符。以下字符是元字符或元字符的起始部分:

. \ ( ) [ ] { } ^ $ + * ? (仅出现在字符集合中才是元字符:-

 

普通字符:

 

test 匹配搜索文本中的"test"备注:它匹配文件名或文本行的任意位置的"test"

 

转义序列:

 

反斜杠 \ 引导转义序列。例子:

\t 制表符

\xnnASCII码值为十六进制数nn的字符,例如\x20代表空格。字符映射表程序charmap.exe(如果安装了)显示大多数特殊字符的ASCII值。你可以使用Windows的计算器(科学型)把十进制数字转换为十六进制。

\x{nnnn}

编码为十六进制数字nnnn的Unicode字符。注意Total Commande中的文件名已使用Unicode,因此需要使用这种语法表达基本英文字符以外的字符。

\[ 左方括号。因为方括号是元字符,搜索的目标字符串包含方括号本身时,必须写为 \[

\\反斜杠

\. 句号 (单独的句号"." 匹配任意字符,见下文)

 

字符集合

 

一对方括号中的字符列表构成字符集合,它精确匹配集合中的一个字符。破折号定义范围,例如[a-z]。前导的尖号^表示字符列表以外的字符。

例子:

[aeiou] 精确匹配列表中元音字母的一个。

[^aeiou] 匹配元音字母以外的字符。

M[ae][iy]er 查找Meier先生名字的各种可能的写法:MayerMeyerMaierMeier。在忘记了名字的准确拼写时很有用。

 

元字符

 

下表是最重要的元字符:

行首

行尾

任意字符

\w 字母,数字或下划线 _

\W \w的补集

\d 数字

\D 非数字

\s 单词分隔符(空格,制表符等空白字符)

\S 非空白字符

\b 单词边界

\B \b的补集

 

重复计数

 

重复计数表示左侧字符或表达式的重复次数。

零次或多次

一次或多次

{n} 正好n

{n,} 至少n

{n,m} 至少n次,至多m

重复计数的工作方式是“贪婪模式”,即,尽可能匹配更多的字符。后面跟问号变为“非贪婪模式”,即,有匹配就停止。

例子:"abbbbc"中搜索"b+"得到"bbbb",而搜索"b+?"只得到"b"

 

可选字符

 

可选字符放在圆括号中,以竖线 | 分隔。

例子:(John|James|Peter) 匹配三个名字JohnJamesPeter中的一个。

 

子表达式

 

圆括号中的表达式即子表达式。

例子:交换mp3文件名中的曲名和演唱者,它们以短横线分隔(曲名 - 演唱者.mp3),可以这样处理:

搜索:(.*) - (.*)\.mp3

替换:$2 - $1.mp3

此处$1代表第1个括号中表达式匹配的内容,$2代表第2个表达式。

 

后向引用

 

\n 代表第n个子表达式已匹配的内容。

例子:(.+)\1+ 匹配abab(其中第1ab .+ 匹配,第2组由\1+匹配)

 

修饰符

 

用于改变正则表达式的行为。

 

(?i) 忽略大小写。这是Total Commander查找文件的默认选项。

(?-i) 区分大小写。

(?g) 打开“贪婪”模式(默认是打开的)

(?-g) 关闭“贪婪”模式,此时"+" "+?" 同义

 

其他修饰符与Total Commander无关,因为程序仅支持单行文字内搜索。

 

Total Commander使用Andrey V. Sorokin编写的免费的DelphiTRegExpr http://www.regexpstudio.com/

上述说明部分来自于这个库的帮助文件。