今天我們要學習的內容就是如何利用正則表達式刪除空行,對于正則表達式刪除空行是不是有很多的小伙伴們不了解呢?別著急,今天小編就為大家介紹正則表達式刪除空行的方法。
我們的目標是要刪除文本中的空行,可能一行也可能是多行。
所以,我的操作如下:
在此,我們匹配空行用的是
(/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.
上文就是關于正則表達式刪除空行的方法,具有很好的參考價值,如果想深入研究的話這些是不夠的,還是需要我們自己去搜集一些相關的知識
新聞熱點
疑難解答