星期四, 九月 20, 2007

Regular Express 表达删除一个空行(blank line)

程序开发中一个常见的问题是如何删除一大段文本中的空行。
所谓的空行就是一行只包含一些空格,制表符或其他不可见的符号的文本行。
在Vbscript的RegExp 对象,支持RegExpOption.Multiline的属性,可以轻易删除。
但其他各种语言,perl,vbscript等等,没有简单的方法。
regularE="^$"可以匹配一个只包含回车换行的空行
但通过十六进制来看很多文本往往发现很多包含000D 00 0D 00 0A之类的空行。
非常难以处理。

标准的删除一个包含很多回车换行的文本的规则表达为
regularE="[\r\n]+\s*[\r\n]+"
这里是一个详细的解释:

http://www.ultraedit.com/index.php?name=Forums&file=viewtopic&t=2777

但这种方法会删除一个所有的回车换行。
所以必须单独编写方法来出来。