通过正则表达式删除空⾏的⽅法
我们的⽬标是要删除⽂本中的空⾏,可能⼀⾏也可能是多⾏。
所以,我的操作如下:
在此,我们匹配空⾏⽤的是
(\r\n)*
这样,就可以匹配多个空⾏,同时⽤null来替代,就可以实现删除空⾏。此⽅案是基于对\r和\n的使⽤。
以前在⽹上看到⼀种实现是:
\n[\s| ]*\r
匹配之后,⽤null替代,也可以实现删除空⾏,效果如下图:
两种⽅案都能实现相同的效果。
如果有其他的不同理解,请发表评论,⼤家共同进步。
我⼜做了以下测试,如下图:
仅⽤了
\n\r
就完全实现了删除所有的空⾏,因为在每⼀个空⾏的开头和结尾都是
\n\r
所以,删除了上⼀⾏之后,当前⾏还有⼀个\n\r,同样能够匹配上,所以,还要在做替代操作。这样,就可以删除所有的空⾏了。
那,如果是
\r\n,效果如何呢?
我⼜做了⼀下测试,效果如下图:
这个就不是我们想要的结果.为什么呢?
我想,我们可以这样理解,
C:\Program Files\Common Files\Relive.dllprogram可以删除吗
C:\Program Files\Common
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\
C:\Documents and Settings\User name\Local Settings\p
这个是原始⽂本,其实,在我们进⾏⽂本处理的时候,我们可以这样把空⾏,⽤
\r\n(回车换⾏,先回车,后换⾏)
来替换掉.⽂本就是:
C:\Program Files\Common Files\Relive.dll\r\n\r\nC:\Program Files\Common \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\\r\nC:\Documents and Settings\User name\Local Settings\p\r\n\r\n\r\n
这⼀段⽂本是⼀个整体,没有回车,没有空隙和间隔,这是我们正在处理的⽂本,只不过回车换⾏是不可见字符,所以就不能看到,但是还是存在的.
所以,在处理的时候才会出现我们上⾯的情况.
有此,我们可以理解为什么
⽤\r\n匹配和替代后,
所有的\r\n都没有了,所以,⽂本,就成为了⼀个连接的纯字符⽂本了.
但是
\n\r
替换后,
中间的所有的\n\r都替代掉了,\r(\n\r……\n\r)\n,中间的部分都替代掉了。所以就剩最后的⼀个\r\n.以上是我的⼀点理解。
PS:这⾥再为⼤家提供2款本站的正则表达式在线⼯具供⼤家参考使⽤:
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论