TotalCommander(TotalCMD)的正则表达式
很久以前很喜欢Total Commander,但是较老的版本不支持树,所以就放弃了。改用xplorer2这个文件资源管理器。但是,不知道xplorer2最近抽什么风,老师无缘无故的崩溃,所以又开始使用Total Commander了。不过,重新用起来这个,发现比老的版本好太多了。所以,现在决定,重新开始使用Total Commander了。
我用编辑器或者资源管理器,很看重的一个功能是:是否支持正则表达式。因为这玩意的确能极大的提高搜索、替换的效率。这次Total Commander没人令人失望。 Total Commander的正则表达式功能基于TRegExpr( http://regexpstudio.com/ ),实现了一个正则表达式的子集。下文中的术语来自于TRegExpr的说明文档。语法与一般支持RegEx的编辑器类似,某些符号,如/n,在TC中不 支持。下文中出现的符号和例子都经过验证,是可用的。 Total Commander在以下功能中支持正则表达式:
正则表达式包括普通字符,特殊字符和元字符。元字符是一些有特殊含义的标识,例如:. / ( ) [ ] { } ^ $ + * ?,正是这些扩展含义的特殊字符组合成了灵活而功能强大的正则表达式。 普通字符 正常的字符串。转义序列(Escape sequences):以反斜杠引导转义序列。例如:
例子:查找字符串soft/[microsoft]时,表达式为:soft///[microsoft/] 字符集合(Character classes) 一对方括号中的字符列表,值为列表中任意一个字符。破折号表示范围,例如h-k表示h,i,j,k,即ASCII码表中介于h和k之间的字符。前导 的^表示后面列表之外的字符。转义字符、破折号、元字符和方括号也可以出现在字符集合中。破折号做为普通字符出现在集合中时,应放在列表的头 /尾或以转义序列/-表示。方括号做为普通字符出现在集合中时,应放在列表的头部或以转义序列表示。 例子:
元字符(Metacharacters) 包括几种特殊的符号:
重复计数(iterators) 表示左侧字符或表达式的重复次数。
重复计数的工作方式是"greedy"模式, 即,尽可能匹配更多的字符。后面跟问号变为"non-greedy"模式,即,有匹配就停止。 例如:在"abbbbc"中搜索"b+"的结果是"bbbb",而搜索"b+?"只得到"b"。 可选字符(alternatives) 由竖线|分隔的一组字符。为了避免歧意,最好用圆括号扩起来。例如:(John|James|Peter)匹配John、James或Peter中的任意一个名字。 匹配时由左向右计算,类似于C语言中的逻辑或运算,左边表达式满足后不再计算右边表达式。例如,在"barefoot"中搜索(foo|foot)时,得到foo,不会得到foot。 竖线|在字符集合中只是普通字符,所以[look|like]的含义是lokie5个字母和竖线中的任意一个字符,而不是look或like中的某个单词。 子表达式(subexpressions) 圆括号中的表达式即子表达式。一个完整的正则表达式可能含有多个子表达式,它们从左向右从1开始编号。可以用$1,$2...引用各个子表达式的值。 例如: 把形如"歌手名 - 曲名.mp3"的文件改名为"曲名(歌手名).mp3" 后向引用(backreferences) /1至/9。/n解析为第n个子表达式已匹配的内容。 例如:go12gogogoza34 中搜索(g.+)(/d+)/1+ 会搜索到go12gogogo,第1个表达式匹配go,第2个表达式匹配12,后面的3组go是由/1+匹配的。 修饰符(Modifiers) 用于改变正则表达式的行为。使用时放在表达式前面。它作用于右侧的表达式,直到遇到另一个修饰符或表达式结束。可以在表达式中插入多个修饰符。
例如:如果希望在文件Copy1.txt,copy2.txt中仅搜索小写copy开头的文件时,使用:(?-i)copy.*/.txt。如果不使用正 则表达式,由于搜索文件时默认是不区分大小写的,搜索copy*.txt时也会得到Copy1.txt。搜索文字时,表达式 (?i)Saint-(?-i)Petersburg得到的结果中,Saint可以有不同的大小写组合,但末尾的单词必定是Petersburg。 Total Commander仅支持正则表达式的子集,例如它仅支持单行文字内的搜索,不支持多行。 注:主体内容非原创,资料多数来源网络,源文地址不可考! (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |