《简繁大师》用户指南

4. 编辑文本/文本文件 目录 6.编辑资源管理器中的文本文件
 

5. 查找和替换


5.1 查找和替换
5.2 在查找和替换中应用特殊字符

5.3 在查找和替换中应用标准正则表达式

5.4 批量替换


5.1 查找和替换
 

《简繁大师》具有强大的查找和替换功能。下图显示的是它的 2 合 1 查找替换对话框。当您采用“启用替换功能”选项时,您就可以进行替操作。如果您关闭这一选项,您可以放心地进行查找操作,而不必担心是否会不小心进行了文本替换。
 

 

图 UG-5-1 功能强大的查找/替换对话框

 

5.2 在查找和替换中应用特殊字符
 

当你在选中“应用特殊字符”选项时,可以在查找或替换中采用特殊字符。包括以下 4 种字符:

 

1) ^类字符:

格式

16 进制数值

说明

^p

0x0D + 0x0A

Windows 回车符,与“\r\n”相同。

^n

0x0A

Unix 回车符,与“\n”相同。

^t 0x09 制表符,与“\t”相同。
^h 文件开始标志,仅用于查找字符串。在替换字符串中相应标志应被略去,即使出现,也不表示特殊意义。

^e

文件结束标志,仅用于查找字符串。在替换字符串中相应标志应被略去,即使出现,也不表示特殊意义。

 

2) \类字符:

格式

16 进制数值

说明

\r

0x0D + 0x0A

回车。

\n

0x0A

Unix 回车(新建一行)。

\t

0x09

制表符。

 

3) 16 进制字符:

格式

16 进制数值

举例说明

\0xX1X2

0xX1X2

X1 和 X2 表示值为 0-9 或 A-F 之间的一个 16 进制。X1X 的值应界于 01 和 X1X2 之间,1-255,但不能为 00。如果总值不足 0x10(16),也不能空着,这种情况应在左边填入 0 补齐字位。

例 1:\0x0D\0x0A(Windows 回车)

例 2:\0x20(空格键)

 

4) 10 进制字符:

格式

10 进制数值

举例说明

\0dN1N2N3

N1*100+N2*10+N3

N1、N2 和 N3 应为 0-9 之间的 10 进制数字。总值应界于 001 和 255 之间。如果总值不足 100,也不能空着,这种情况应在左边填入 0 补齐字位。

例 1:\0d013\0d010(Windows 回车)

例 2: \0d032 (空格键)

 

5.3 在查找和替换中应用标准正则表达式
 

选项操作

 

如您选中“应用正则表达式”选项框,将可在查找和替换以及以下的批量替换功能中应用行业标准正则表达式。

 

选用此选项后“匹配全词”与“应用特殊字符”选项将隐藏,但区分大小写选项仍保留。

 

隐藏“匹配全词”选项是因为标准正则表达式中已有相关开关,且功能更为精细可控。应用正则表达式时,如果您在一个单词的左右两边加“\b”开关(此开关指单词的边界),如在 word 两边同时加“\b”后,表达式变为“\bword\b”),则表示匹配 word 全词。不过您也可以根据自己的需要只在一边加,如“\bword”可以匹配“word”和“words”。还有一个相关的开关是大写的“\B”,表示非单词边界。如“word\B”可以匹配单词“words”,但不匹配“word”。

 

隐藏“应用特殊字符”是因为“应用特殊字符”功能是本软件的自有功能,正则表达式包含了“应用特殊字符”的所有内容,所以此选项不必再保留。

 

基本使用

 

正则表达式是一种具有相当复杂度的专业技术,但也具有极其强大的功能。对于一个未曾专门学习过正则表达式的普通人,您一般需要花半天到两整天时间才能粗通它的使用。相关内容可以写成一本 N 多页的小书才能写全,我们也不打算在此提供详细说明。后面会附一个网上的正则表达式教程及索引列表,有兴趣的用户可以自行访问学习。

 

我们举例说明正则表达式的使用。

 

以下是一些最基本、最常用的正则表达式操作符:

 

元字符格式 简介 备注
\b 单词边界,只是一个位置,并不是一个字符。

此元字符仅指示位置,不对应具体字符或字串。

\bword\b 就表示匹配 word 时要求匹配单词。这个符号也可以左右分别选用,可以只用左不用右,也可以只用右不用左。

\B 表示单词内部,此处不是单词边界。

此元字符仅指示位置,不对应具体字符或字串。

\bword\B 表示这里的 word 必须是某个单词的左边的一部分,如 words 符合此要求,但 word 不符合。

\s 空白字符,包括空格、制表符和换页符。 相当于:[ \f\n\r\t\v]
\S 除了空白字符(空格、制表符和换页符)以外的任何字符。 相当于:[^ \f\n\r\t\v]
\d 数字字符(0-9)。 相当于:[0-9]
\D 除数字字符(0-9)以外的任意字符。 相当于:[^0-9]
\w 任意字母(a-z,A-Z)或数字(0-9)。 相当于:[A-Za-z0-9]
\W 除了 a-z、A-Z、0-9 以外的任意字符。 相当于:[^A-Za-z0-9]
\A 整篇文本的开头。 此元字符仅指示位置,不对应具体字符或字串。
\Z 整篇文本的结尾。 此元字符仅指示位置,不对应具体字符或字串。
^ 一行的开头。这只是一个位置,并不是一个具体的字符。 此元字符仅指示位置,不对应具体字符或字串。
$ 一行的结束。这只是一个位置,并不是一个具体的字符。 此元字符仅指示位置,不对应具体字符或字串。
. 通配符,匹配除换行符以外的任意字符。  
* 重复 0 次或多次。 相当于{0,}
+ 重复 1 次或多次。 相当于{1,}
.* “.”和“*”的组合,表示任意长度的任意字符(不包括换行符)。  
.*? ".*"的变体,表示找到符合要求的最短结果。如无“?”,“.*”将匹配符合要求的最长结果。  
[字符集] 匹配字符集中的任一字符。左边是“[”,右边是“]”,中间是需要匹配的一组字符的集合。 [A-Z] 指 26 个大写英文字符中的任一个;[a-z] 指 26 个小写英文字符中的任一个;[0-9] 指数字 0-9 中的任一个;如果写为 [A-Za-z0-9] 则匹配所有字母和数字;如果是 [aieou] 则匹配元音字母 aieou 中的任一个。
[^字符集] 匹配除字符集中指定字符以外的所有字符。 [^aieou] 可匹配除 a、i、e、u、o 外的所有字符,如“2”、“b”、“-”等。
\元字符 转义字符。如某字符本身具有特殊意义,在此字符左边加上“\”可以取消其特殊意义,仅指该字符本身。 如“\[”指字符“[”;如“\]”指字符“]”。由于“[]”是用于指定字符集的元字符,如果您直接写“[”或“]”则指字符集,不能表示此元字符。为了得到“[”或“]”本身,需要在左边加左斜线“\”符号。
\n Windows 回车符,与相当于 Windows 编程中的“\r\n”。  
\t 制表符。  
| 此字符适用于分隔多种选择。当表达式中有三样以上元素时,此元字符在本引擎上表现不稳定,可能会出错, 使用时务必应先取多个样本测试效果,确定有效再使用。 “A|Z”指 A 或 Z。
(表达式) 以“表达式”定义的一个集合。 将括号内的内容当作一个完整集合。如 ([A-Z][0-9][0-9])。

{n,m}

重复次数,格式为{n,m}、{n,}或{n}。

其中 n 表示最低重复次数,m 表示最高重复次数。最高重复次数 m 可省略(此时表示重复次数不少于 n,但无上限);但最低重复次数 n 不可省略。

{n,m}:重复 n-m 次。如{1,5}指重复 1 至 5 次。

{n,}:重复 n 次以上。如{0,}指重复 0 次以上,相当于*;而如{1,}指重复 1 次以上,相当于+。

{n}:重复 n 次。如{5}指重复 5 次。

此元字符指此前面部分的重复次数,经常与集合(exp)一起使用。

一些例子:

\w{1,}:相当于\w+,匹配一串由 a-z、A-Z 和 0-9 构成的字符串,长度至少一位。此写法常用于匹配一个单词。

(\w+ ){1,5}:匹配由 1-5 个单词构成的字符串,其中单词之间以一个空格分隔(注意最后也有一个空格)。

 

例 1

匹配包含有如“[StudentA02]”形式的标签的行。具体地说,左右有方括号“[”和“]”,括号内开始的字串是 Student,后面有一个大写字母和 2 个数字(01-99),这样的行如:

 

学生 [StudentA02] 上午上数学课。

学生 [StudentC93] 早上打扫卫生。

 

我们假设需要搜索的正文中全部都是有效字串,没有形如 [StudentN00](最后两位数字为 00)的无效字串,那么就可以不用考虑存在错误的可能性,简单地以以下的表达式进行搜索:

 

^.*?\[Student[A-Z][0-9][0-9]\].*?\n

 

例 2

a

匹配不含有“student”的行:

 

(?!.*student)^.*$

 

以上表达式用到的语法是“(?!exp)”,匹配后面跟的不是“exp”的位置。此用法在后面列出的《正则表达式 30 分钟入门教程》 中有介绍。此匹配可以认为是以下匹配的简化版:

 

b

匹配包含“teacher”,但不含有“student”的所有行:

 

(?!.*student)^.*?teacher.*?$

 

例 3

a

匹配内容为“Start Line”的行及往前的所有行:

 

\A(.*?\n){2,}Start Line\n

 

b

匹配从内容为“End Line”的行及往后的所有行:

 

^End Line(.*?\n){2,}.*?\Z

 

以上表达式用到的语法是“(?!exp)”,匹配后面跟的不是“exp”的位置。此用法在以下教程中提到。

 

例 4

a

匹配以单词“and”开头,以单词“whose”结尾,中间包含 2 个任意单词(由字母+数字组成)的行:

 

^.*?\band \w+ \w+ whose\b.*?\n

 

b

匹配以单词“and”开头,以单词“whose”结尾,中间包含 0-5 个任意单词(由字母+数字组成)的行。如果中间的单词数为 0,即指含“and whose”的行:

 

^.*?\band (\w+ ){0,5}whose\b.*?\n

 

正则表达式精选教程

 

请勿被以下教程标题中的“30 分钟”字样所误导。粗通正则表达式的精细使用一般需要半天到两整天的时间。至于完全精通...那时间海了去了...当然一般也无此必要。不过您可以先找您喜欢的少量主要功能使用,这样很快就能上手了。

 

《正则表达式 30 分钟入门教程》

很好的中文入门教程,对于正则表达式的初学者,30 分钟肯定不够,正常情况下需要半天到一天才能基本弄懂。

 

原网址:

http://deerchao.net/tutorials/regex/regex.htm

在谷歌上查找:

http://www.google.com.hk/search?num=100&hl=zh-CN&newwindow=1&c2coff=1&safe=strict&biw=1920&bih=915&q=%22%E6%AD%A3%E5%88%99%E8%A1%A8%E8%BE%BE%E5%BC%8F30%E5%88%86%E9%92%9F%E5%85%A5%E9%97%A8%E6%95%99%E7%A8%8B%22&btnG=Google+%E6%90%9C%E7%B4%A2&aq=f&aqi=&aql=&oq=

在百度上查找:

http://www.baidu.com/s?rn=100&bs=%D0%C2%C3%EB%C9%B1&f=8&wd=%D5%FD%D4%F2%B1%ED%B4%EF%CA%BD30%B7%D6%D6%D3%C8%EB%C3%C5%BD%CC%B3%CC

 

《The 30 Minute Regex Tutorial》(英文版)

英文教程。

 

原网址:

http://www.codeproject.com/KB/dotnet/regextutorial.aspx

在谷歌上查找:

http://www.google.com.hk/search?num=100&hl=zh-CN&newwindow=1&c2coff=1&safe=strict&biw=1920&bih=915&q=%22The+30+Minute+Regex+Tutorial%22&btnG=Google+%E6%90%9C%E7%B4%A2&aq=f&aqi=&aql=&oq=

 

《Introduction to Regular Expressions》(英文版)

英文教程,微软出的。

 

原网址:

http://msdn.microsoft.com/en-us/library/28hw3sce

在谷歌上查找:

http://www.google.com.hk/search?num=100&hl=zh-CN&newwindow=1&c2coff=1&safe=strict&biw=1920&bih=915&q=%22Introduction+to+Regular+Expressions%22&btnG=Google+%E6%90%9C%E7%B4%A2&aq=f&aqi=&aql=&oq=

最重要的部分(正则表达式语法):

http://msdn.microsoft.com/en-us/library/ae5bf541.aspx

 

本软件正则表达式引擎的模式设定

 

指定大小写:用户可选。

多行模式:指定采用。

单行模式:指定不采用。

 

不同正则表达式引擎的主干功能是一样的,但在某些偏枝细节上可能有微小的差异。本软件所用正则表达式引擎也一样,在个别偏枝功能上可能会和这些教程中写得不一样,您需要仔细研究并大量测试才能深入掌握。

 

5.4 批量替换
 

当查找/替换对话框中左下角的“启用替换功能”检查框被选中时,可以使用强大的专业级编辑功能 -“批量替换”功能。

 

单击“批量替换”按钮,即可打开“批量替换”对话框:

 

 

图 UG-5-2 批量替换主对话框

 

该功能允许一次性对上或下编辑区中的文本连续进行不限次的多组替换,每组查找和替换词均可为多行文本,每组替换可单独设置是否应用、匹配全词、区分大小写和应用特定字符等选项。

 

每套批量替换设置均可保存为文件长期使用。批量替换功能既是强大的文本编辑功能,也可以作为简繁转换的有益补充。

 

在安装包中附带了三个页面清理宏,可用于规范、整理中英文文章的标点、空格及段落布局,也可用作编辑、制作批量替换宏的参考样本。