通过正则表达式删除空行的方法

所属分类: 网络编程 / 正则表达式 阅读数: 1923
收藏 0 赞 0 分享

我们的目标是要删除文本中的空行,可能一行也可能是多行。
所以,我的操作如下:
reg3.PNG
在此,我们匹配空行用的是
(\r\n)*
这样,就可以匹配多个空行,同时用null来替代,就可以实现删除空行。此方案是基于对\r和\n的使用。

以前在网上看到一种实现是:
\n[\s| ]*\r
匹配之后,用null替代,也可以实现删除空行,效果如下图:
reg4.PNG
两种方案都能实现相同的效果。

如果有其他的不同理解,请发表评论,大家共同进步。

我又做了以下测试,如下图:
reg5.PNG
仅用了
\n\r
就完全实现了删除所有的空行,因为在每一个空行的开头和结尾都是
\n\r
所以,删除了上一行之后,当前行还有一个\n\r,同样能够匹配上,所以,还要在做替代操作。这样,就可以删除所有的空行了。
那,如果是
\r\n,效果如何呢?
我又做了一下测试,效果如下图:
reg6.PNG
这个就不是我们想要的结果.为什么呢?
我想,我们可以这样理解,
C:\Program Files\Common Files\Relive.dll

C:\Program Files\Common Files\svchost.exe

C:\Program Files\Internet Explorer\msvcrt.bak
C:\Program Files\Internet Explorer\msvcrt.dll

C:\Program Files\Internet Explorer\msvcrt.ebk

C:\WINNT\system32\drivers\npf.sys
C:\WINNT\system32\wpcap.dll
C:\WINNT\system32\Packet.dll
C:\WINNT\system32\WanPacket.dll

C:\Documents and Settings\User name\Local Settings\Temp\wmso.exe
C:\Documents and Settings\User name\Local Settings\Temp\BCG5.tmp

这个是原始文本,其实,在我们进行文本处理的时候,我们可以这样把空行,用
\r\n(回车换行,先回车,后换行)
来替换掉.文本就是:
C:\Program Files\Common Files\Relive.dll\r\n\r\nC:\Program Files\Common Files\svchost.exe\r\n\r\nC:\Program Files\Internet Explorer\msvcrt.bak\r\nC:\Program Files\Internet Explorer\msvcrt.dll\r\n\nC:\Program Files\Internet Explorer\msvcrt.ebk\r\n\r\n\r\n\r\nC:\WINNT\system32\drivers\npf.sys\r\nC:\WINNT\system32\wpcap.dll\r\nC:\WINNT\system32\Packet.dll\r\nC:\WINNT\system32\WanPacket.dll\r\n\r\nC:\Documents and Settings\User name\Local Settings\Temp\wmso.exe\r\nC:\Documents and Settings\User name\Local Settings\Temp\BCG5.tmp\r\n\r\n\r\n

这一段文本是一个整体,没有回车,没有空隙和间隔,这是我们正在处理的文本,只不过回车换行是不可见字符,所以就不能看到,但是还是存在的.
所以,在处理的时候才会出现我们上面的情况.
有此,我们可以理解为什么
用\r\n匹配和替代后,
所有的\r\n都没有了,所以,文本,就成为了一个连接的纯字符文本了.
但是
\n\r
替换后,
中间的所有的\n\r都替代掉了,\r(\n\r……\n\r)\n,中间的部分都替代掉了。所以就剩最后的一个\r\n.

以上是我的一点理解。

PS:这里再为大家提供2款本站的正则表达式在线工具供大家参考使用:

JavaScript正则表达式在线测试工具:http://tools.jb51.net/regex/javascript

正则表达式在线生成工具:http://tools.jb51.net/regex/create_reg

更多精彩内容其他人还在看

正则表达式匹配 非XXX的行

问题:如何匹配"非:.+123.123.123.10.+ " 行
收藏 0 赞 0 分享

正则表达式不包含属性

一个标签里不包含某个属性 的 正则表达式的写法
收藏 0 赞 0 分享

ASP正则函数替换分页后的参数

在分页系统里面用到的把page后面得东西都给丢掉
收藏 0 赞 0 分享

asp match正则函数使用Matchs实例

asp matchs函数提供了对正则表达式匹配的只读属性的访问。一直都用这个函数,没想到本站竟然没有这类文章,汗一个,最近我会多加一些这样的文章
收藏 0 赞 0 分享

asp 图片正则 替换,替换前检查图片是不是本地地址的方法

这个图片正则先检查图片的地址,不是本地的则用本地的asp突破盗链,方便使用,注意是答chinaz的朋友问的一个问题
收藏 0 赞 0 分享

java正则表达式彻底研究

从J2SE1.4起Java增加了对正则表达式的支持就是java.util.regex包
收藏 0 赞 0 分享

正则表达式口诀 正则表达式学习工具

正则表达式口诀 + 常用的正则表达式 + 正则表达式学习工具+正则处理工具 正则是每个程序员绕不开的堡垒,只有把它攻下来。我觉得正则之所以难,第一难是需要记忆,第二难是要求具备抽象逻辑思维。
收藏 0 赞 0 分享

比较实用的正则表达式学习笔记

最近在学习正则,一些比较有用的东西怕忘记,记下来,比较乱,想一条记录一条
收藏 0 赞 0 分享

asp只采集网站可见文本的正则

它可以过虑Js 可以过滤 CSS 过滤HTML标识,只采集页面的可见文本。
收藏 0 赞 0 分享

asp.net常用正则表达式

比较常用的多种语言支持的正则整理收集
收藏 0 赞 0 分享
查看更多