来自:Bulk Rename Utility 文档
【Bulk Rename Utility 是有效的、简洁的文件名批量替换工具,但如果想发挥它的最大功效,还是得学会正则表达式,Bulk Rename Utility 的正则表达式是 Perl Regular Expression。下面是一个实例。】
Assume you have a file called Program Files,and you wish to swap the names around (e.g. Files Program). A Regular Expression which performs this task is :
【假设我们有一个文件叫做 Program Files ,我们想交换一下,改为 Files Program,那么Perl正则表达式应为:】
^([A-Z][a-z]*) ([A-Z][a-z]*)
Let us break this down into components:
【让我们拆解一下:】
^ This means start at the beginning of the string
【^意思是字符串开始处】
([A-Z][a-z]*) This is a single "group",which we will use later. What this says is that we want any capital letter,followed by any number of lower-case letters. The single capital letter is denoted by the [A-Z],i.e. allow a letter in the range A to Z. The lower-case letters are denoted by [a-z] in the same way,followed by an asterisk. This means we can allow any number of letters.
【([A-Z][a-z]*) 是一个独立“组”。其含义是:我们想找到所有大写字母,这些大写字母后面是小写字母。一个大写字母用 [A-Z] 代表,也就是允许A到Z中的任一大写字母。一个小写字母用 [a-z] 代表,也就是允许a到z的任一小写字母。最后的 * 星标,表示我们可以不限制满足以上条件的字母数量,可以是一个,也可以是多个。】
We then allow a single space. If I had wanted multiple spaces I would probably have typed "space asterisk",or possible ( *) to group.
【然后,我们在第一个独立组后面加一个空格。如果希望不止一个空格,那么应该用“空格+星标”,即 ( *) 表明,这里用了括号表示又一个独立组。】
We then have exactly the same again,i.e. we are denoting two words.
【再然后,我们重复了第一组的表达式,也就是说我们的目标对象是两个情况一样的单词:Program Files 。】
Notice we had two sets of brackets. Everything within each set of brackets is treated as a "grouping",and we refer to these groupings as \1,\2,\3 etc.
【注意我们有两套括号,每对括号中的内容被视为一个“分组”,这样就可以用 \1, \2, \3 来引用他们。】
So,lets say we wanted to swap around the two words in the filename. We would put:
【这样,我们的交换表达式中,匹配部分就可以这样写:】
^([A-Z][a-z]*) ([A-Z][a-z]*)
For the match string,and
【替换部分这样写:】
\2 \1
The above example is very precise. If we wanted to swap the first two words of a name,but keep the remaining text the same,we Could put
【上面的例子很简单,如果我们有一个文件名为:Program Files Directory ,我们只想交换前两个单词,剩下的部分保持不变,即成为:Files Program Directory,那么我们应该这样写:】
^([A-Z][a-z]*) ([A-Z][a-z]*)(.*)
\2\1\3
This says to create three groups: the first group is the first word,the second group is the second word,and the third group is everything that's left.