当前位置:  编程技术>其它

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

    来源: 互联网  发布时间:2014-10-18

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

我们的目标是要删除文本中的空行,可能一行也可能是多行。
所以,我的操作如下:

在此,我们匹配空行用的是
(rn)*
这样,就可以匹配多个空行,同时用null来替代,就可以实现删除空行。此方案是基于对r和n的使用。

以前在网上看到一种实现是:
n[s| ]*r
匹配之后,用null替代,也可以实现删除空行,效果如下图:

两种方案都能实现相同的效果。

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

我又做了以下测试,如下图:

仅用了
nr
就完全实现了删除所有的空行,因为在每一个空行的开头和结尾都是
nr
所以,删除了上一行之后,当前行还有一个nr,同样能够匹配上,所以,还要在做替代操作。这样,就可以删除所有的空行了。
那,如果是
rn,效果如何呢?
我又做了一下测试,效果如下图:

这个就不是我们想要的结果.为什么呢?
我想,我们可以这样理解,
C:Program FilesCommon FilesRelive.dll

C:Program FilesCommon Filessvchost.exe

C:Program FilesInternet Explorermsvcrt.bak
C:Program FilesInternet Explorermsvcrt.dll

C:Program FilesInternet Explorermsvcrt.ebk

C:WINNTsystem32driversnpf.sys
C:WINNTsystem32wpcap.dll
C:WINNTsystem32Packet.dll
C:WINNTsystem32WanPacket.dll

C:Documents and SettingsUser nameLocal SettingsTempwmso.exe
C:Documents and SettingsUser nameLocal SettingsTempBCG5.tmp

这个是原始文本,其实,在我们进行文本处理的时候,我们可以这样把空行,用
rn(回车换行,先回车,后换行)
来替换掉.文本就是:
C:Program FilesCommon FilesRelive.dllrnrnC:Program FilesCommon Filessvchost.exernrnC:Program FilesInternet Explorermsvcrt.bakrnC:Program FilesInternet Explorermsvcrt.dllrnnC:Program FilesInternet Explorermsvcrt.ebkrnrnrnrnC:WINNTsystem32driversnpf.sysrnC:WINNTsystem32wpcap.dllrnC:WINNTsystem32Packet.dllrnC:WINNTsystem32WanPacket.dllrnrnC:Documents and SettingsUser nameLocal SettingsTempwmso.exernC:Documents and SettingsUser nameLocal SettingsTempBCG5.tmprnrnrn

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

以上是我的一点理解。


    
 
 
 
本站(WWW.)旨在分享和传播互联网科技相关的资讯和技术,将尽最大努力为读者提供更好的信息聚合和浏览方式。
本站(WWW.)站内文章除注明原创外,均为转载、整理或搜集自网络。欢迎任何形式的转载,转载请注明出处。












  • 相关文章推荐
  • JSP由浅入深(3)—— 通过表达式增加动态内容
  • 通过javascript实现DIV居中,兼容各浏览器版本
  • applet可以不通过数字签名,通过设置IE直接在本地访问本地文件吗
  • php通过socket_bind()设置IP地址代码示例
  • 我使用.net编译通过,但是使用g++编译不能通过。总是提示我undefined reference to ~myclass()
  • 通过javascript库JQuery实现页面跳转功能代码
  • 紧急求救!能通过jdbc怎样连接sqlsever 然后通过 for xml 关键字得到xml流吗?
  • c#通过委托delegate与Dictionary实现action选择器代码举例
  • 我想我的网站屏蔽掉通过某些网站过来的访问,我想通过htaccess 文件来做,请大家帮帮我。
  • linux下通过crond实现自动执行程序
  • 如何通过INTERNET访问通过共项一条线路上网的局域网中的机器???
  • 通过docker commit命令保存对docker容器的修改
  • 为什么g++编译通过了,而gcc却编译通过不了???
  • 通过docker run命令运行新的docker镜像
  • 请指点: 在windows下能否通过程序来获取linux下的用户列表,甚至通过自己写的windows程序界面增加修改linux的用户
  • 通过docker ps命令检查运行中的docker镜像
  • Jbuilder第一次编译说缺包,引入通过!然后把原来引入的注释,又通过!上帝,救我!
  • Session id实现通过Cookie来传输方法及代码参考
  • 红旗Linux主机可以通过127.0.0.1访问,但如何是连网的Win2000机器通过Linux的IP去访问Linux
  • 通过docker search命令搜索可用docker镜像
  • 请指点: 在windows下能否通过程序来获取linux下的用户列表,甚至通过自己写的windows程序界面增加修改linux的用户 100分相赠
  • Python3通过request.urlopen实现Web网页图片下载
  • 工作站Redhat Linux7.2如何通过NT4.0 proxy代理服务器上网,我不能通过其验证!请高手指点思路和方法!


  • 站内导航:


    特别声明:169IT网站部分信息来自互联网,如果侵犯您的权利,请及时告知,本站将立即删除!

    ©2012-2021,,E-mail:www_#163.com(请将#改为@)

    浙ICP备11055608号-3