我们的目标是删除文本中的空行,空行可能是一行,也可能是多行。所以我的操作如下:。
在这里,我们使用(rn)*来匹配空行,这样我们就可以匹配多个空行,并用null替换它们,从而可以删除空行。此方案基于r和 n的使用。以前在互联网上看到的一个实现是:n[s| ]*r匹配后,用null替换它,或删除空行。效果如下:。
两种方案都能达到同样的效果。如果有其他不同的理解,请评论,一起进步。我又做了如下测试,如下所示:。
完全删除所有空行只需要nr,因为每一空行的开始和结束都是nr,所以删除前一行后,当前行还有一个nr,也可以匹配,所以需要替换。这样,您可以删除所有空行。那么,如果是rn,效果如何?我又做了一个测试,效果如下:。
这不是我们想要的结果。为什么呢?我想我们可以这样理解,c: 程序文件常用文件 relief.dll。
C: 程序文件公共文件svchost.exe
c : 程序文件 Internet Explorer msvcrt . bak c : 程序文件Internet Explorermsvcrt.dll
C: 程序文件互联网浏览器
c : WINNT system32 驱动程序 NPF . sysc : WINNT system32 wpcap . dllc 3360 WINNT system32 packet . dllc : WINNT system32 wanpacket . dll
C: 文档和设置用户名本地设置 temp wmso.exec: 文档和设置用户名本地设置 temp bcg5.tmp这是原文。实际上,在文本处理过程中,我们可以用rn(先输入新行,再输入新行)替换空行。文本是c: 程序文件公共文件 relief.dll r n r n 360 程序文件公共文件。r n r nc3360 程序文件 Internet Explorer msvcrt . bak r nc3360 程序文件 Internet Explorer msvcrt . dll r n nc3360 程序文件 Internet Explorer msvcrt . ebk r n r n r n r nc3360 WINNT system32 驱动程序 NPF . sys r nc3360 WINNT system32 wpcap . dll r n这是我们正在处理的文本,但是回车是一个看不见的字符,所以它看不见,但是它仍然存在。因此,只有当我们处理它时,才会出现上述情况。因此,我们可以理解为什么所有的 r 都被混合和替换,所以文本成为一个连接的纯字符文本。但是,在 n r放置之后,中间的所有 n r都会被替换。 r ( r)。所以只有最后一个 r n .以上是我的理解。
PS:这里有两个正则表达式在线工具,供大家参考:
JavaScript正则表达式在线测试工具:http://tools.jb51.net/regex/javascript.
在线正则表达式生成工具:http://tools.jb51.net/regex/create_reg.