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

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

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

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

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

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

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

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

这个就不是我们想要的结果.为什么呢?
我想,我们可以这样理解,
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

时间: 2024-09-25 19:30:23

通过正则表达式删除空行的方法的相关文章

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

  我们的目标是要删除文本中的空行,可能一行也可能是多行. 所以,我的操作如下: 在此,我们匹配空行用的是 (rn)* 这样,就可以匹配多个空行,同时用null来替代,就可以实现删除空行.此方案是基于对r和n的使用. 以前在网上看到一种实现是: n[s| ]*r 匹配之后,用null替代,也可以实现删除空行,效果如下图: 两种方案都能实现相同的效果. 如果有其他的不同理解,请发表评论,大家共同进步. 我又做了以下测试,如下图: 仅用了 nr 就完全实现了删除所有的空行,因为在每一个空行的开头和结

EditPlus删除空行、空段落的正则表达式

遇到一个比较大的文本文件需要去除空行,首先想到的自然是正则表达式.偷懒去网上找了几个删除空行的正则表达式,填到EditPlus里居然都不能用...而且大多数的正则表达式都用到了"\r",也就是回车符,关于"\n"和"\r"的区别我以后再写,今天只是为了记录一个正则表达式. ^[ \t]*\n 解释一下: 1.^表示一行的开头.空行嘛,肯定在一行的开头就是空的... 2.[ \t],"\t"前面还有一个空格.[]表示范围中的字符

javascript中使用正则表达式删除前后空格的方法_正则表达式

去掉首位空格 复制代码 代码如下: str=str.replace(/^\s+|\s+$/g,''); js正则表达式删除字符串前后空格 String.prototype.trim=function(){ var reSpace=/^\s*(.*?)\s*$/; return this.replace(reSpace,"$1″); }; 让我们分析一下第二行的正则表达式 ^ 行开始 \s* 匹配字符前面的所有空格,贪婪模式重复 (.*?) 捕获组,勉强模式重复匹配任意字符,也就是我们最终需要(去

javascript中使用正则表达式删除前后空格的方法

去掉首位空格 复制代码 代码如下: str=str.replace(/^\s+|\s+$/g,''); js正则表达式删除字符串前后空格 String.prototype.trim=function(){ var reSpace=/^\s*(.*?)\s*$/; return this.replace(reSpace,"$1″); }; 让我们分析一下第二行的正则表达式 ^ 行开始 \s* 匹配字符前面的所有空格,贪婪模式重复 (.*?) 捕获组,勉强模式重复匹配任意字符,也就是我们最终需要(去

Notepad++怎么删除空行

      Notepad++怎么删除空行         第一种方法:不需要使用正则表达式,使用系统自带的功能即可实现 第二种方法:通过正则表达式 1.rn转义符替换 按ctrl+h,跳出搜索替换框,把查找模式定义为扩展(n,r-) 查找目标:rnrn 替换为:rn 或者 选择替换,把查找模式设置为正则表达式,在查找框中输入 ^s+ ,替换框留空,点"全部替换",即可(先全选). 查找目标:^s+ 替换为:留空 第三种方法:下载安装插件 TextFX 先下载安装插件 TextFX,下

Excel中用VBA实现删除空行和空列

在exce中删除空行和空列的方法有很多,相对而言删除空行较为简单,只需进行筛选,将空白行筛选出来,删除即可,但要删除空列比较困难.因为你不能按列进行筛选删除.Excel中没有这 个功能.当然你可以用另外一种方法,就是按列进行排序将空白列排序在一起,然后删除,但这种方法面临着列的顺序被打乱的问题,吃力不讨好.本文将利用Excel中强大VBA功能来完成删 除空白行和列的方法. 步骤一.打开excel,按ALT+F11组合建,调出VBA程序窗口 步骤二.在插入菜单中,选择模块,插入一个模块 步骤三.在

【省纸教程】删除空行 紧凑排版

从网上下载的文本,往往存在空行,这样既不美观,打印又浪费纸张.下面介绍两种册除空行的方法: 方法一:使用"替换"功能,删除空行. 1.打开需整理文档. 2.选择"编辑|替换"菜单项(或按下[Ctrl]+H组合键),打开"查找和替换"对话框. 3.在"查找内容"右侧框内输入两个段落标记:^p^p,在"替换为"右侧框内输入一个段落标记:^p.见下图. 4.单击"全部替换"按钮.这时文档中的空

asp.net 正则替换html标签与删除指定字符方法

asp教程.net 正则替换html标签与删除指定字符方法,使用了正则表达式进行规则过滤,由于html标记都是基于<>这种格式,而且还有类似 这样的符号,所以分了2次处理将字符串处理为无html格式的字符串.   public string NoHtml(string html) {     string StrNohtml = System.Text.RegularExpressions.Regex.Replace(html, "<[^>]+>", &q

word中多余的空行怎么删除?word删除空行的教程

如下图所示我们如何来删除空行呢 大家不用急一步步片下看就知道了,具体如下 1.打开word2007 2.之后我们在菜单中点击"开始"-"编辑"-"替换"-"查找和替换"对话框中(也可以按ctrl+f)来打查找和替换框了 3.出现"查找和替换"对话框 4.输入"查找内容"项为手动换行符用"^l"表示,其中 l 为 L 的小写.当然在替换换行符之前,需先把空格替换.这里换