用正则表达式实现排版助手(GIDOT TYPESETTER)的部分排版功能
2009年08月06日星期四上午 08:42
副标题:用正则表达式实现段首缩进、修正换行、修正非段落换行、删除行尾空格、删除空行
相信使用过排版助手的人应该都觉得这是一个好软件吧?不过,我对其中的“删除非段落换行”有一个不满的地方
[/gevolution90/blog/item/34cabb7fc2b8710128388ada. html]。
于是才引发出这一篇文章。
*如果你还未有在windows下的正则表达式批量替换工具的话,推荐使用TextForever[/stronghorse/software/index.htm#Tex tForever],很强大的文本整理工具
1.段首缩进:
可以把每行(段)的前面格式化成指定的字符串,比如2个全角空格。
正则:^[ ]*(?=[^\s])
你可以替换成2个全角空格或4个半角空格或你自己喜欢的任何字符串。
2.修正换行:
有些文章一行紧接着一行,看起来有点不舒服,可以把每段内容段(有文字的段)之间的换行格式化成指定数量的换行比如双换行(两段之间空一行空行)。
正则:[\r\n]+
你可以替换成2个回车。
3.修正非段落换行:
有点文章很变态的,它从文本内容中实现换行,比如:
第一段的内容,内容,内容
第一段第二行的内容内容内容。
这样的换行,这对于资料的整理有点不利,所以,这个正则就是用来修正这样的换行的,把它们合并成一行,即一个段落。
正则:^(。
{25,}[^……“”!!::??])\r\n
替换成:$1
把你认为不是段落结束的标点加入到那个中括号中,大括号中的“25”为作
用行的最短长度,这样就可以避免对如:
第一章 XXX
这样的正确无结束标点的段落也删除掉。
但这个正则有一点问题,一开始我是这样写的:^(。
{25,}[^……“”!!::??])[\r\n]+,但替换出来的文本有一个实心小黑格的乱码,不知道是为什么,不知哪一位高手知道原因的望指教。
4.删除行尾空格:
删除的原因其实是为了“修正非段落换行”不出错。
正则:[ ]+[\r\n]+
替换成空(什么也没有)就行了。
5.删除空行:
删除那些只有空格的行。
正则:^[ ]*$
也是替换成空。