一、软件安装/删除
本软件为纯正的绿色软件,不需要安装,下载ZIP包后直接展开、运行即可。删除时删除可执行文件和帮助文件即可。
软件包中仅包含下列两个文件,如果有其它的,保证不是我加的,请不要犹豫,立刻删除:
1. TextForever.exe。可执行文件。
2. TextForever.htm。本帮助文件。
另外如果在运行过程中改变了参数值,会自动生成TextForever.ini文件,删除时可以一起删除。
单独删除TextForever.ini文件后重新运行TextForever,所有参数将恢复成缺省值,相当于点击了“恢复”按钮。
二、软件使用
注意:TextForever会自动记忆您所设置的参数值(记录在TextForever.ini文件中),点击“恢复”按钮可以将所有参数恢复到缺省值。
1、HTML文件到文本文件的转换(HTML->Text)
根据需要设置选项(也可以什么不选,直接使用预设值),点击“转换选定文件”按钮,在弹出的对话框中选择需要转换的文件(按住Ctrl键或 Shift键点击文件,即可选多个),然后点“打开”或“Open”按钮即可;或点“转换选定文件夹”按钮,在弹出的对话框中选择起始文件夹,然后点“确定”或“OK”按钮即可。
如果点的是“转换选定文件夹”按钮,并事先选了“包括子文件夹”选项,则转换时会自动转换所有子文件夹中的htm、html、shtml文件,否则只转换所选文件夹下的文件。
如果转换出来的内容不对,可能是因为真正的内容是用JavaScript动态生成的,可以选择“使用IE内核”,然后再点“开始转换”,重新试一遍。这个选项相当于IE的“另存为文本文件”功能,用缺省选项搞不定的网页,都可以用这个选项试试看。与在IE中打开网页不同的是,如果网页中有错,这里不会弹出错误对话框要求调试网页,而是直接跳过,反正错误对获取文本没有什么影响。
对于使用UTF-8编码的HTML文件(这种文件似乎越来越多了),情况有点复杂:
如果没有选择“使用IE内核”,则转换结果取决于“UTF-8转ANSI”选项:如果该选项被选中,则结果是ANSI编码的文本文件,否则是UTF-8编码的文本文件。
如果选择了“使用IE内核”,则转换结果一律是ANSI编码的文本文件。
如果在简体中文Windows下转换简体UTF-8编码的HTML文件,或者在繁体中文Windows下转换繁体UTF-8编码的HTML文件,转换出来的ANSI编码文件都不会有任何问题,所以缺省情况下“UTF-8转ANSI”选项是被选中的。但是如果要在简体中文Windows下转换繁体UTF-8 编码的HTML文件,或在繁体中文Windows下转换简体UTF-8编码的HTML文件,直接转成ANSI多半会出现乱码,在这种情况下,只能不选“使用IE内核”、不选“UTF-8转ANSI”,将UTF-8编码的HTML转换成UTF-8编码的文本文件,然后再用“编码转换”功能,先将UTF-8转换成Unicode,再将Unicode转换成GB或Big5编码。
2、文件合并(Merge Files)
一般网站刊登电子版小说时,都是一章一个文件,因此在将HTML文件转换成TXT文件后,一般还需要按照章节顺序将转换出来的诸多TXT文件合并成一个文件。
使用方法:按照界面上标示出来的1、2、3、4、5顺序,先选择需要合并的文件,再合并后的文件,并根据需要设置选项,点“开始合并”按钮即可开始合并。
需要注意的是,如果在第1步选择的是“合并文件”而不是“合并文件夹”,可以指定对文件按照中文数字进行排序,这是专门为了处理像“第二十七章.txt”、“第三十一章.txt”这样的文件名而设置的。
3、段落合并(Paragraph)
在把HTML转换成TXT文件后,由于去掉了HTML中的段落控制,转出来的文件看起来可能会参差不齐,需要重新合并、分段。
使用方法:按照界面上标示出来的1、2、3顺序,先设置“源文件段落开始标志”选项,再设置“输出文件段落控制”选项,最后选择源文件。如果是对单个文件进行处理,则在“选择源文件”框中,先点“选择...”按钮选择源文件(如果前面做过文件合并,这里会自动填入合并后的文件名,则不再需要选择),再点“开始合并”按钮开始合并;如果是对多个文件进行操作,直接点“对多个文件中的段落进行合并...”按钮,然后在弹出的对话框中选择需要操作的所有文件(按住Ctrl键或Shift键点击文件,即可选多个)。
选项说明:
“源文件段落开始标志”框指定分段条件,即在输入文件中,满足什么样的条件算一个段落。这样的条件可以有4个:
1. 以2个或指定个数的中文空格开头。
2. 以4个或指定个数的英文空格开头。
3. 上一行的长度比平均行长短少1/20。一般这个条件用于OCR出来、没有整理过的文件。如下面这段文字:
他很专注的检阅着自己刚获得的新领土。
虽然自己对空气中的这股刺鼻甜味并不是很喜欢,但只要习惯之后也就没什么。
他在这块领地上绕了整整一圈。看来这里似乎没有任何敌人的样子。
他抬起头来望着一道闸门,刚才自己就是从这里出发的。虽然他看不懂门上那块
牌子的文字,不过那里确实是写着'海德伯爵城馆:帝国中最小不隆咚的贵族城
馆。'
他端正的坐在门前,并盼望那扇门能够马上开启。因为自己一路睡到刚刚才醒的
关系,被关在门外也是不得已的。
然而,那扇门却没有任何开启的迹象。
很显然,每一段的最后一行都要比其它行短。
4. 后面跟一个空行。
“输出文件段落控制”框指定输出格式,可以指定的内容包括:
1. 段落的引导字符:可以是2个中文空格、4个英文空格或者什么也没有。
2. 在段落后面加一个空行。
3. 删除原文文本行的引导空格。
4. 删除原文文本行的末尾空格。
4、段落切分(Reparagraph)
有时候在用段落合并功能对原文中的段落进行合并、整理后,还需要按照指定的行宽,对段落进行分行,避免在没有自动环绕功能的浏览器上出现横向滚动条。
段落合并功能与段落切分功能互为逆过程,如果对切分结果不满意,可以合并后重新切分。
使用方法:按照界面上标示出来的1、2、3顺序,先设置“输出段落”选项,再设置源文件是否保留备份,最后选择源文件。如果是对单个文件进行处理,则在“选择源文件进行操作”框中,先点“选择...”按钮选择源文件(如果前面做过文件合并,这里会自动填入合并后的文件名,则不再需要选择),再点“开始切分”按钮开始切分;如果是对多个文件进行操作,直接点“对多个文件中的段落进行切分...”按钮,然后在弹出的对话框中选择需要操作的所有文件(按住 Ctrl键或Shift键点击文件,即可选多个)。
如果切分结果出现行末最后一个字节是半个汉字,则该汉字被分到下一行,以免出现乱码;如果切分结果中,行末会出现把一个英文单词劈成两半,则整个单词分到下一行;如果行末是英文空白、标点符号,则按照习惯,即使这些字符超出最大行长,也不分到下一行。
选项说明:
1. “最大行长”项说明分行的行长,以英文字符为单位。注意一个中文字符等于两个英文字符。
2. “段落开头添加”选项设置分行后段落的引导字符,可以是2个中文字符、4个英文字符或者什么也没有。
3. “在段落后添加空行”选项说明是否需要在段落后加一个空行。
5、编码转换(GB/GBK/Big5)
这个功能可以实现GB、GBK、Big5、Unicode码的相互转换,及从日文Shift JIS到中文GB 2312、UTF-8到Unicode的单向转换。为了省事,转码过程使用的是Windows本身提供的标准API接口。由于转码过程中需要用 Unicode作为中间码,因此此功能不能在对Unicode支持非常有限的Windows 95/98/me下使用,只能在支持GBK/Big5/Shift JIS代码页的2000/XP下使用。正常情况下,只要IE能够正常显示中文简体、中文繁体、日文网页,即可正常转换。
使用方法:先设置文件选项、转码选项,然后点“转换选定文件”按钮,在弹出的对话框中选择需要转换的文件(按住Ctrl键或Shift键点击文件,即可选多个),然后点“打开”或“Open”按钮即可;或点“转换选定文件夹”按钮,在弹出的对话框中选择起始文件夹,然后点“确定”或“OK”按钮即可。
如果点的是“转换选定文件夹”按钮,并事先选了“包括子文件夹”选项,则转换时会自动转换所有子文件夹中的txt文件,否则只转换所选文件夹下的文件。
转码后如果出现固定的错别字,可以用“文本替换”功能进行修正。
文件选项说明:
1. 覆盖原文件:转换后的文件将覆盖转换前的文件。
2. 原文件另存为 bak 文件:转换后的文件不会覆盖转换前的文件,转换完成后将在原文件名后加后缀.bak。
转码选项说明:左侧为原文件中的汉字编码,右侧为转换后的汉字编码。
1. GB码:按照国家标准GB2312-80编排,包括全部简体字及常用符号。在中文简体版的Windows下显示为简体,在繁体版Windows下显示为乱码。
2. GBK码:是国家技术监督局1995年为中文Windows 95所制定的新的汉字内码规范(其中GB表示国标,K表示扩展)。该规范在字汇一级上支持ISO10646和GB13000中的全部中日韩(CJK)汉字,并与国家标准GB2312-80信息处理交换码相兼容。如果在中文简体版的Windows 95/98/2000下看到繁体中文或繁简混杂,那么多半这些中文是用GBK编码的。
3. Big5码:港台地区流行的汉字编码,针对繁体字。这种编码的汉字在中文简体版的Windows 95/98/2000下多半显示为乱码,但是在繁体版Windows下显示正常。
4. Unicode码:Windows 2000/XP下的字符编码,全世界的文字都可以用统一的编码进行表示。在Windows 95/98/Me下显示,看到的可能是一堆问号。
5. Shift JIS:日文编码的一种。
6. UTF-8码:Unicode编码的一种实现。
6、文本替换(Replace)
对指定的文件进行批量文本替换,包括去除HTML文件中的广告链接、js/css代码,或从TXT文件中去掉某些固定的文本等。
在设计这个功能时,主要依据我平时对文件进行整理的经验,同时参考了UltraEdit32 v10.10a、居辰工作室的Text Witch v1.0、风林的文本整理器 v2.0等的长处。另外为了加快速度,替换前先将整个文件读入内存,然后在内存中进行替换,因此处理某些巨型文件时可能会有问题,不过处理通常几个MB的文件应该没啥问题。
使用方法:先设置替换选项,然后输入替换内容,即可开始替换。
“替换选项”说明:
* 匹配全词:对中文没用,不用点。
* 忽略大小写:对中文没用,不用点。
* Unix格式转Windows格式:Unix格式的文本文件以n为换行符,Windows格式的文本文件以rn为换行符。通常这个选项也不用点。
“替换选项”中每选择一个选项,都会增加一定的处理时间,“忽略大小写”选项被选中后,还会增加内存消耗,因此请尽量不要选择不必要的选项。
输入替换内容的方法:可以点“添加文本”或“添加字符”按钮添加内容,也可以点“调入”按钮调入以前保存的内容。每项内容都可以包含多行,一次可以对多项内容进行替换,特别适合于批量整理从网上下载的HTML文件。如果经常需要整理从同一个网站下载的网页,可以在输入全部替换内容后,点“保存”按钮存盘,以后再整理该网站的网页时,点“调入”按钮即可载入替换内容。
“开始替换”选项说明:
* 如果只需要对某个或某几个文件进行替换,可以点“选择并替换指定的文件”按钮,在弹出的对话框中选择文件即可。按住Ctrl或Shift键点击文件,即可一次选定多个文件。
* 如果需要对某个文件夹下的文件进行替换,可以先在“文件”框中选择或输入文件选择标准,再点“文件夹”框右侧的按钮选择文件夹,点击“替换指定文件夹下的文件”按钮即可。如果“包括子文件夹”选项被选中,则连子文件夹下的文件一起替换。
7、HTML整理(Tidy HTML)
这个功能主要用于整理从网站上批量下载的HTML文件,包括去掉其中的广告链接、不合适的CSS设置及功能限制(禁止选择、禁止拷贝、禁止右键菜单)等,也可以解密某些HTML加密软件加密的HTML页。对于做E书的人来说,还可以用来在打包前先检查一下HTML页面中是否包含指向本地磁盘的绝对链接。
使用方法:
1. 先选择需要整理的HTML文件所在文件夹。
2. 根据需要选择检查选项,然后点“检查”按钮开始对文件进行扫描。
3. 扫描结果出来以后,先逐项双击打开看看,对不合适的可以编辑或删除。搞定后,点“替换表中所有项”按钮,对HTML文件进行替换。如果觉得一项一项双击打开看太麻烦,也可以导出成HTML文件看,但是一定要看,不然可能发生悲剧。
注意:在第三步开始替换后,原始HTML文件将会被替换,请事先做好文件备份,以免后悔。
选项说明如下:
* 包括子文件夹:如果此选项被选中,则扫描时包括选定文件夹下面的所有子文件夹。
* Unix格式转Windows格式:Unix格式的文本文件以n为换行符,Windows格式的文本文件以rn为换行符。通常这个选项也不用点。
* 解密网页:对加密HTML文件进行解密,然后对解密结果进行检查。对于未加密网页来说,勾上这个选项后,不仅检查速度会变慢,而且整理后的网页代码看起来好象重新排过版一样(其实是被IE内核重新排版),所以缺省此选项未被选中。
* 检查绝对链接:检查网页中是否包含绝对链接。检查时不包括anchor链接。理论上说,打包E书的所有链接都必须是相对链接,不能是绝对链接。
* 检查CSS:检查网页中是否包含样式表。对于不满意的样式表可以替换或清除。
* 检查Script:检查网页中是否包含脚本。通常广告链接都在脚本里。
* 检查功能限制:检查网页里是否包含功能限制,包括禁止选择、禁止拷贝、禁止右键菜单等。
在选择解密网页、检查绝对链接、检查CSS、检查Script、检查功能限制等选项时要注意,如果都选上,不仅检查速度慢,而且可能一次列出太多的检查结果,因此应该根据需要,一次只检查一项或几项,不需要的选项不必选。
8、文件切分(Split Files)
能够按照指定的大小切分文本文件,并且避免因为切出半个汉字而造成乱码,或将一个英文单词切到两个文件中。
某些手机对jar文件大小有限制,所以在制作jar电子书前,往往需要先对文本文件进行切分,然后再打包成jar书。
使用方法:
先设置“文件选项”,再设置“文件最大长度”,然后点击“开始”按钮,在弹出的对话框中选择需要切分的文件(可多选)即可。每切分一个文件,都会在您所选的文件所在目录下创建一个子目录,存放切分后的文件。
9、文本提取(Extractor)
从文本中抽取或删除指定的内容。其实这个功能完全可以通过正则表达式替换实现,不过考虑到正则表达式不是人人都懂,所以还是单独做了这么一个大众化的功能。
使用方法:
1. 选择需要进行的操作,究竟是“提取”还是“删除”起始点到结束点之间的内容。
2. 指定在输出时,是否要输出起始点、结束点的内容,如起始点字符串、结束点字符串。
3. 设置起始点。
4. 设置结束点。
5. 设置在提取完成后,如何处理原TXT文件。
6. 根据需要,点击“开始提取”框中的按钮。
“开始提取”选项说明:
* 如果只需要对某个或某几个文件进行提取,可以点“选择并提取指定的文件”按钮,在弹出的对话框中选择文件即可。按住Ctrl或Shift键点击文件,即可一次选定多个文件。
* 如果需要对某个文件夹下的文件进行提取,可以先在“文件”框中选择或输入文件选择标准,再点“文件夹”框右侧的按钮选择文件夹,点击“提取指定文件夹下的文件”按钮即可。如果“包括子文件夹”选项被选中,则连子文件夹下的文件一起提取。
10、正则表达式(RegExp)
运用正则表达式,实现批量文本查找、文本替换、文件切分功能。合理使用这些功能,可以全部或部分代替本软件的下列功能:Html-> Text、段落合并、段落切分、文本替换、HTML整理、文件切分、文本提取,当然前提条件是您能够写出正确的表达式,否则建议您还是隐藏这个页面吧。
支持正则表达式的软件在实现时通常都基于某个成熟的正则表达式引擎,目前可用的引擎有不少,从开源的到封装过的都有。从我试用的结果来看,开源的几个引擎用起来都有点麻烦,尤其在处理MBCS(多字节字符集)的时候,偏偏中文就是典型的MBCS。而微软在JScript/VBScript中提供的正则表达式引擎,不仅接口简单、使用方便,对MBCS的支持也没话说,所以成为我的首选。而这个引擎目前又有两个版本:1.0版和5.5版。1.0版从IE 5开始支持,5.5从IE 5.5开始支持。从我测试的情况看,5.5版至少在以下方面比1.0版强:
1、支持非贪婪模式,而1.0版所有匹配都是贪婪的。
2、支持Multiline选项,这个对^、$有影响,而且很常用。
所以我没啥好犹豫的,直接就选择了5.5版。当然由此也带来了两个限制:
1、TextForever的正则表达式功能只能在装有IE 5.5以上版本的机器上使用。不过现在IE 6应该已经算标配了吧?
2、由于JScript/VBScript内部均基于UNICODE,所以在表达式中计算字符数的时候,一个中文字也算一个字符,而不是象通常ANSI环境下,一个字母、数字算一个字符,一个中文字算两个字符。编码转换使用当前系统缺省代码页。
微软正则表达式引擎5.5版的详细说明见JScript/VBScript的相关文档,在本文附录B部分给出了一个语法表,摘自微软出版的《VBScipt 用户指南》电子版。这个基本上是给会写正则表达式的人士参考用,用它来学写正则表达式可能有点困难,如果真想学,建议还是老老实实找本书去翻翻吧:这个正则表达式引擎要比我用过的EditPlus v2.10c、UltraEdit32 10.10a的复杂和强大许多,包括向后引用(Backreferencing)等。
使用方法:
1、“添加”正则表达式。添加时可以先测试一下表达式的效果。如果表达式不正确,在这里才给出提示。表达式输入后,可以“上移”、“下移”、“删除”、“修改”,也可以“保存”,在需要的时候再“调入”,以重复利用。
2、选择需要操作的文件所在文件夹,及需要操作的文件。如果“含子文件夹”选项被选中,则操作包括所选文件夹及其下所有子文件夹中的文件,否则只处理所选文件夹中的文件。
3、根据需要,选择“查找”、“替换”或“文件切分”操作。为了保险,建议在做替换或切分之前,先用查找功能查一次,看看正则表达式的匹配结果与想像的是否一致,以免一失足成千古恨。
在输入正则表达式时,允许有三个选项:
* 全局搜索(Global):指明在搜索正则表达式的匹配时,是搜索文件中的所有匹配,还是只搜索第一个匹配。缺省为选中,即搜索所有匹配。
* 忽略大小写(Ignore Case):指明搜索正则表达式匹配时是否忽略大小写。这个对中文没用,所以缺省未选中。
* 多行文本(Multiline):如果被选中,那么 "^" 匹配每行的开始位置,而 "$" 匹配每行的结束位置。如果未被选中,那么 "^" 匹配文件的开始位置,而 "$" 匹配文件的结束位置。缺省为选中。
11、OCR
将单色TIFF文件批量OCR成文本文件,结果文件可单独存放,也可以合并成一个大文本文件。使用本功能前请先阅读《用Pdg2Pic、TextForever实现批量OCR》。
使用方法:先选择需要OCR的文件夹,然后选择结果文件,再根据需要设置OCR选项(通常不需要更改缺省设置),点“开始OCR”即可。
OCR选项说明:
1、自动旋转:如果页面出现歪斜,用此功能可以纠斜。
2、自动拉伸:如果页面长宽比例失调,可以用此功能校正。
3、OCR语言:选择OCR语言。目前允许选择英文、中文简体、中文繁体。
自动旋转、自动拉伸均需要时间,考虑到多数PDG文件不需要进行校正,因此这两个选项缺省不选中。如果页面确实变形比较厉害,可以选中后重新OCR。
12、TCR
将文本文件批量压缩成tcr文件,或将tcr文件批量解压成文本文件。压缩时可以选择是否过滤空白符、段落标记,以节省存储和显示空间。这个功能是专门给制作在手机和PDA上阅读的电子书用的,如果您只打算在电脑上看书,相信您不会用到这个功能。
使用方法:
TXT文件压缩:先设置“压缩文件选项”,然后点击“开始压缩”按钮,在弹出的对话框中选择需要压缩的文件(可多选)即可。压缩后的文件和您所选的文件在同一目录下,如果有同名文件,将会被自动覆盖。
TCR文件解压:点击“开始解压”按钮,在弹出的对话框中选择需要解压的文件(可多选)即可。解压后的文件和您所选的文件在同一目录下,如果有同名文件,将会被自动覆盖。
附录A 鸣谢
TCR文件处理代码来自Andrew Giddings的TCR 1.04,在此对他表示感谢!
在“编码转换”中将GBK/Big5转换成GB码时,繁体字词修正表参考了盛泉虎的DreamEdit V2.3.6和风林的文本整理器 V2.0的缺省设置,在此对他们表示感谢!
“HTML整理”功能的部分创意来自大唐游侠的文本之星TextStar,所用的HTML代码解析器来自Gurmeet S. Kochar的HTML Reader C++ Class Library,在此对他们表示感谢!
“Html->text”、“HTML整理”、“正则表达式”等功能均使用了微软随Windows系统提供的控件,“OCR”功能则采用了微软Office 2003所带的Microsoft Office Document Imaging (MODI),在此表示感谢!
附录B 正则表达式语法(引自《VBScipt 用户指南》)
一个正则表达式就是由普通字符(例如字符 a 到 z)以及特殊字符(称为元字符)组成的文字模式。该模式描述在查找文字主体时待匹配的一个或多个字符串。正则表达式作为一个模板,将某个字符模式与所搜索的字符串进行匹配。
这里有一些可能会遇到的正则表达式示例:
正则表达式 匹配
^[ t]*$ 匹配一个空白行。
d{2}-d{5} 验证一个ID 号码是否由一个2位数字,一个连字符以及一个5位数字组成。
<(.*)>.*</1> 匹配一个 HTML 标记。
字符串替换实例
字符串 <A HREF=../mrx/arc/mrx_003b.txt>
正则表达式 <A HREF=([dD].*)txt>
替换为 <A HREF=$1txt target=center>
结果 <A HREF=../mrx/arc/mrx_003b.txt>
下表是元字符及其在正则表达式上下文中的行为的一个完整列表:
字符 描述
将下一个字符标记为一个特殊字符、或一个原义字符、或一个向后引用、或一个八进制转义符。例如,'n' 匹配字符 "n"。'n' 匹配一个换行符。序列 '\' 匹配 "" 而 "(" 则匹配 "("。
^ 匹配输入字符串的开始位置。如果设置了 RegExp 对象的 Multiline 属性,^ 也匹配 'n' 或 'r' 之后的位置。
$ 匹配输入字符串的结束位置。如果设置了RegExp 对象的 Multiline 属性,$ 也匹配 'n' 或 'r' 之前的位置。
* 匹配前面的子表达式零次或多次。例如,zo* 能匹配 "z" 以及 "zoo"。* 等价于{0,}。
+ 匹配前面的子表达式一次或多次。例如,'zo+' 能匹配 "zo" 以及 "zoo",但不能匹配 "z"。+ 等价于 {1,}。
? 匹配前面的子表达式零次或一次。例如,"do(es)?" 可以匹配 "do" 或 "does" 中的"do" 。? 等价于 {0,1}。
{n} n 是一个非负整数。匹配确定的 n 次。例如,'o{2}' 不能匹配 "Bob" 中的 'o',但是能匹配 "food" 中的两个 o。
{n,} n 是一个非负整数。至少匹配n 次。例如,'o{2,}' 不能匹配 "Bob" 中的 'o',但能匹配 "foooood" 中的所有 o。'o{1,}' 等价于 'o+'。'o{0,}' 则等价于 'o*'。
{n,m} m 和 n 均为非负整数,其中n <= m。最少匹配 n 次且最多匹配 m 次。例如,"o{1,3}" 将匹配 "fooooood" 中的前三个 o。'o{0,1}' 等价于 'o?'。请注意在逗号和两个数之间不能有空格。
? 当该字符紧跟在任何一个其他限制符 (*, +, ?, {n}, {n,}, {n,m}) 后面时,匹配模式是非贪婪的。非贪婪模式尽可能少的匹配所搜索的字符串,而默认的贪婪模式则尽可能多的匹配所搜索的字符串。例如,对于字符串 "oooo",'o+?' 将匹配单个 "o",而 'o+' 将匹配所有 'o'。
. 匹配除 "n" 之外的任何单个字符。要匹配包括 'n' 在内的任何字符,请使用象 '[.n]' 的模式。
(pattern) 匹配 pattern 并获取这一匹配。所获取的匹配可以从产生的 Matches 集合得到,在VBScript 中使用 SubMatches 集合,在JScript 中则使用 $0…$9 属性。要匹配圆括号字符,请使用 '(' 或 ')'。
(?:pattern) 匹配 pattern 但不获取匹配结果,也就是说这是一个非获取匹配,不进行存储供以后使用。这在使用 "或" 字符 (|) 来组合一个模式的各个部分是很有用。例如, 'industr(?:y|ies) 就是一个比 'industry|industries' 更简略的表达式。
(?=pattern) 正向预查,在任何匹配 pattern 的字符串开始处匹配查找字符串。这是一个非获取匹配,也就是说,该匹配不需要获取供以后使用。例如,'Windows (?=95|98|NT|2000)' 能匹配 "Windows 2000" 中的 "Windows" ,但不能匹配 "Windows 3.1" 中的 "Windows"。预查不消耗字符,也就是说,在一个匹配发生后,在最后一次匹配之后立即开始下一次匹配的搜索,而不是从包含预查的字符之后开始。
(?!pattern) 负向预查,在任何不匹配 pattern 的字符串开始处匹配查找字符串。这是一个非获取匹配,也就是说,该匹配不需要获取供以后使用。例如'Windows (?!95|98|NT|2000)' 能匹配 "Windows 3.1" 中的 "Windows",但不能匹配 "Windows 2000" 中的 "Windows"。预查不消耗字符,也就是说,在一个匹配发生后,在最后一次匹配之后立即开始下一次匹配的搜索,而不是从包含预查的字符之后开始
x|y 匹配 x 或 y。例如,'z|food' 能匹配 "z" 或 "food"。'(z|f)ood' 则匹配 "zood" 或 "food"。
[xyz] 字符集合。匹配所包含的任意一个字符。例如, '[abc]' 可以匹配 "plain" 中的 'a'。
[^xyz] 负值字符集合。匹配未包含的任意字符。例如, '[^abc]' 可以匹配 "plain" 中的'p'。
[a-z] 字符范围。匹配指定范围内的任意字符。例如,'[a-z]' 可以匹配 'a' 到 'z' 范围内的任意小写字母字符。
[^a-z] 负值字符范围。匹配任何不在指定范围内的任意字符。例如,'[^a-z]' 可以匹配任何不在 'a' 到 'z' 范围内的任意字符。
b 匹配一个单词边界,也就是指单词和空格间的位置。例如, 'erb' 可以匹配"never" 中的 'er',但不能匹配 "verb" 中的 'er'。
B 匹配非单词边界。'erB' 能匹配 "verb" 中的 'er',但不能匹配 "never" 中的 'er'。
cx 匹配由 x 指明的控制字符。例如, cM 匹配一个 Control-M 或回车符。x 的值必须为 A-Z 或 a-z 之一。否则,将 c 视为一个原义的 'c' 字符。
d 匹配一个数字字符。等价于 [0-9]。
D 匹配一个非数字字符。等价于 [^0-9]。
f 匹配一个换页符。等价于 x0c 和 cL。
n 匹配一个换行符。等价于 x0a 和 cJ。
r 匹配一个回车符。等价于 x0d 和 cM。
s 匹配任何空白字符,包括空格、制表符、换页符等等。等价于 [ fnrtv]。
S 匹配任何非空白字符。等价于 [^ fnrtv]。
t 匹配一个制表符。等价于 x09 和 cI。
v 匹配一个垂直制表符。等价于 x0b 和 cK。
w 匹配包括下划线的任何单词字符。等价于'[A-Za-z0-9_]'。
W 匹配任何非单词字符。等价于 '[^A-Za-z0-9_]'。
xn 匹配 n,其中 n 为十六进制转义值。十六进制转义值必须为确定的两个数字长。例如,'x41' 匹配 "A"。'x041' 则等价于 'x04' & "1"。正则表达式中可以使用 ASCII 编码。.
num 匹配 num,其中 num 是一个正整数。对所获取的匹配的引用。例如,'(.)1' 匹配两个连续的相同字符。
n 标识一个八进制转义值或一个向后引用。如果 n 之前至少 n 个获取的子表达式,则 n 为向后引用。否则,如果 n 为八进制数字 (0-7),则 n 为一个八进制转义值。
nm 标识一个八进制转义值或一个向后引用。如果 nm 之前至少有 nm 个获得子表达式,则 nm 为向后引用。如果 nm 之前至少有 n 个获取,则 n 为一个后跟文字 m 的向后引用。如果前面的条件都不满足,若 n 和 m 均为八进制数字 (0-7),则 nm 将匹配八进制转义值 nm。
nml 如果 n 为八进制数字 (0-3),且 m 和 l 均为八进制数字 (0-7),则匹配八进制转义值 nml。
un 匹配 n,其中 n 是一个用四个十六进制数字表示的 Unicode 字符。例如, u00A9 匹配版权符号 (©)。
附录C 版本更新记录
Version 1.61
功能增强:在“段落合并”、“段落切分”功能中,允许中断处理过程。
功能增强:在处理HTML文件时,文件列表增加*.asp;*.aspx;*.jsp。
Version 1.60
错误修正:GB转Big5时,可能会在转换结果后添加“尾巴”。
功能增强:改进“按末尾数字排序”算法,能够从文件名中正确抽取最后一个数字。
Version 1.59
新增功能:在“编码转换”中,如果选择“转换选定文件夹”,允许指定文件类型。
Version 1.58
新增功能:在“文本替换”、“正则表达式”中,可以调整列表项的顺序。
选择功能:在“文件合并”功能中,可以指定对需要合并的文件按中文数字排序。
Version 1.57
新增功能:“Html->Text”功能支持对选定文件夹进行操作,支持子文件夹。
功能调整:“Html->Text”功能中,更改了对utf-8编码文件的支持,详见使用说明。
新增功能:“编码转换”功能支持对选定文件夹进行操作,支持子文件夹。
新增功能:“编码转换”功能支持utf-8到unicode的转换。
Version 1.56
错误修正:在碰到某些网页里出现连续的0字符时,0字符后的内容被截断。
Version 1.55
1. 新增功能:OCR,能够将单色TIFF文件OCR成文本文件。OCR引擎为微软Office 2003所带的Microsoft Office Document Imaging (MODI)。
2. 功能增强:参照FreePic2Pdf的界面,对“文件合并”界面进行了调整,以方便使用。
3. 功能增强:更改显示设置后,能自动重启软件,不用再手工重启。
4. 错误修正:正则表达式替换时,如果输入多个正则表达式,只有最后一个表达式起作用。
5. 错误修正:在“Html->Text”功能中,如果<pre></pre>之间的内容超过64 KB,会出错退出。
6. 错误修正:某些HTML文件中如果包含ASCII码为00的字符,则这些文件不能被处理。
Version 1.54
1. 软件名称从FineReader改为TextForever,以免与别的软件重名。
2. 新增功能:显示设置,可以设置只显示常用页面,隐藏不常用的页面。
3. 新增功能:“正则表达式”页,可以用正则表达式查找、替换、切分文件。此功能可以全部或部分代替下列功能:Html->Text、段落合并、段落切分、文本替换、HTML整理、文件切分、文本提取,当然前提条件是您能够写出正确的表达式,否则建议您还是隐藏这个页面吧。
4. 新增功能:“文本提取”页,可以从文本中抽取或删除指定的内容。其实这个功能可以通过正则表达式实现,不过考虑到正则表达式不是人人都懂,所以还是单独做了这么一个大众化的功能。
5. 错误修正:在“Html->Text”页面中,如果选择了“使用IE内核”,再点“恢复”按钮,各控件状态不会改变。
Version 1.53
1. 新增功能:HTML整理,批量去除HTML文件中的js、css、功能限制、绝对链接,并能解密加密网页。这个功能主要用于整理从网站上批量下载的HTML文件,去掉其中的广告链接、不合适的CSS设置及功能限制(禁止选择、拷贝、右键菜单等),也可以解密某些HTML加密软件加密的HTML页。对于做E书的人来说,还可以用来在打包前先检查一下HTML页面中是否包含指向本地磁盘的绝对链接。此功能部分创意来自大唐游侠的文本之星TextStar。
2. 功能增强:在“Html->Text”时,能够处理<pre>段中的<<符号,能够处理<xmp>标签。
3. 功能增强:在“文本替换”时,能够处理以r作为行结束符的文件。
4. 功能增强:在“文本替换”页中,导出HTML文件后,自动打开导出的文件。
5. 功能调整:将“编码转换”页调整到“文本替换”页前面,便于在转换完成后,用替换功能校正转换出来的固定错别字。
6. 功能调整:在“段落合并”页中,调整了判断段落开始的第三个条件的说明,原来界面上的说明有误。
7. 错误修正:在“段落合并”功能中,如果文件最后不以回车或换行符结束,则最后一行可能会重复上一行的部分内容。
8. 错误修正:在打开“文本替换”页后,有时程序会意外退出。
Version 1.52
1. 新增功能:文本替换,支持多行替换及批量替换,并能保存/调入替换内容。
2. 新增功能:在“编码转换”页中,支持从日文Shift-JIS到中文GB2312的转换。
3. 功能增强:在“编码转换”页中,能够检查当前系统是否支持GBK/Big5/Shift- JIS代码页。
4. 功能增强:在“Html->Text”页中,如果使用IE内核,而网页又是utf-8编码,则可以选择将结果转换成Unicode或ANSI,ANSI使用系统缺省字符集(简体中文Windows的缺省字符集为GB2312)。
5. 功能增强:在“段落合并”页中,允许段落开头的中、英文空格最多为50个(以前为10个)。
6. 功能增强:在“编码转换”页中,将GBK/Big5转换成GB码时,能够修正更多的繁体字词。
7. 错误修正:在“Html->Text”页中,如果使用IE内核,而网页中的脚本有错误,则会启动脚本调试软件。
Version 1.51
1. 功能增强:在“TCR”页面中,可以对英文空格、制表符指定如何处理,便于压缩英文文本。
2. 功能增强:在“编码转换”页中,将GBK/Big5转换成GB码时,能够修正更多的繁体字词。字词修正表参考了盛泉虎的DreamEdit V2.3.6和风林的文本整理器 V2.0的缺省设置,再加上我自己的积累,因此应该比这两个软件缺省设置下的转换效果更好一些。
3. 功能增强:对英文版界面进行了调整。
4. 错误修正:在“编码转换”页中,将GBK/Big5转换成GB码时,可能会因为半个汉字而造成乱码。
Version 1.50
1. 功能增强:在“编码转换”页中,将unicode格式转换成其它格式时,能够兼容big endian的unicode格式。
2. 功能增强:“编码转换”功能只能用于Windows 2000/XP,在Windows 95/98/me下使用时,在界面上给出提示。
3. 错误修正:在“段落合并”功能中,在处理某些文件时,会造成程序死锁。
Version 1.49
1. 新增功能:在HTML->Text时,能够指定使用IE内核,相当于IE的“另存为文本文件”功能,原来搞不定的网页,尤其是用JavaScript动态生成显示内容的网页,现在都可以用这个选项试试看。
2. 新增功能:在“段落合并”、“段落切分”页,能够一次对多个文件进行操作。以前一次只能合并或切分一个文件。
3. 新增功能:“文件切分”页,能够按照指定的大小切分文本文件,并且避免因为切出半个汉字而造成乱码,或将一个英文单词切到两个文件中。某些手机对jar文件大小有限制,所以在制作jar电子书前,往往需要先对文本文件进行切分。
4. 新增功能:在Big5->GB和GBK->GB时,能够对常见的错别字进行修正,包括後、麽、於等。
5. 新增功能:增加Unicode与GB、GBK、Big5的相互转换。因此将页面标题从原来的“GB/GBK/Big5”改成“编码转换”。
6. 错误修正:以n分行的文件在进行内码转换后,就成了以rn分行了。
7. 错误修正:在HTML->Text时,如果HTML的注释中包含其它tag,则tag后的注释内容会被输出。
8. 错误修正:在HTML->Text时,如果在HTML的body中包含script、style段,则这些段中内容会被当作文本输出。
Version 1.48
1. 新增功能:将文本文件批量压缩成tcr文件,将tcr文件批量解压成文本文件。压缩时可以选择是否过滤空白符、段落标记,以节省存储和显示空间。这个功能是专门给制作在手机和PDA上阅读的电子书用的。
2. 新增功能:自动记忆所有参数,点“恢复”按钮恢复缺省值。
3. 新增功能:在“HTML->TXT”、“TXT文件合并”页中,加入“删除源文件”选项;在“段落合并”、“段落切分”页中,加入“源文件另存为.bak”选项。
4. 功能调整:删除了“HTML->TXT”中的某些选项。这些选项基本上没有什么实际用途。
5. 错误修正:英文版PropertyPage高度计算不准确。
Version 1.47
新增功能:GB/GBK/Big5码转换。转码过程使用的是Windows本身提供的标准接口,转码效果与IE相当。
Verion 1.46
1. 发行简体中文版。
2. 更正“关于”对话框中的email地址。
3. 统一文件浏览对话框的风格。
4. 修正定位代码,彻底解决改变字体后PropertyPage高度计算不精确的问题。
5. 根据新的用户界面,更改了本帮助文件。
Version 1.45
在分段(Paragraph)的时候,可以去除行首、行尾的制表符。
Version 1.44
在HTML->TXT对话框中,增加“Convert iso8859-1 sequence”选项,即将 转成空格,将·转成·等。
Version 1.43
1、增加分行(Reparagrahp)功能。
2、增加本说明文件。