zhyiwww
          用平實的筆,記錄編程路上的點點滴滴………
          posts - 536,comments - 394,trackbacks - 0

          我們的目標是要刪除文本中的空行,可能一行也可能是多行。
          所以,我的操作如下:
          reg3.PNG
          在此,我們匹配空行用的是
          (\r\n)*
          這樣,就可以匹配多個空行,同時用null來替代,就可以實現刪除空行。此方案是基于對\r和\n的使用。

          以前在網上看到一種實現是:
          \n[\s| ]*\r
          匹配之后,用null替代,也可以實現刪除空行,效果如下圖:
          reg4.PNG
          兩種方案都能實現相同的效果。

          如果有其他的不同理解,請發表評論,大家共同進步。

          我又做了以下測試,如下圖:
          reg5.PNG
          僅用了
          \n\r
          就完全實現了刪除所有的空行,因為在每一個空行的開頭和結尾都是
          \n\r
          所以,刪除了上一行之后,當前行還有一個\n\r,同樣能夠匹配上,所以,還要在做替代操作。這樣,就可以刪除所有的空行了。
          那,如果是
          \r\n,效果如何呢?
          我又做了一下測試,效果如下圖:
          reg6.PNG
          這個就不是我們想要的結果.為什么呢?
          我想,我們可以這樣理解,
          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.

          以上是我的一點理解。



          |----------------------------------------------------------------------------------------|
                                     版權聲明  版權所有 @zhyiwww
                      引用請注明來源 http://www.aygfsteel.com/zhyiwww   
          |----------------------------------------------------------------------------------------|
          posted on 2007-09-18 10:26 zhyiwww 閱讀(27376) 評論(11)  編輯  收藏 所屬分類: 正則表達式

          FeedBack:
          # re: 正則表達式刪除空行
          2008-10-01 14:10 | lanmuz
          {因為在每一個空行的開頭和結尾都是。。。}

          高明,可見作者其理解之 深,思維之巧。
          妙哉  回復  更多評論
            
          # re: 正則表達式刪除空行
          2009-05-07 17:36 | 22
          你這是什么正則,用在js上不靈光的  回復  更多評論
            
          # re: 正則表達式刪除空行
          2010-05-09 21:13 | 牙牙學語
          謝謝你的文章,受教啦
          我用RegexBuddy測過了,無論Javascript還是Java語言,\n\r都可以去除純粹的空行,即一行中從行頭到行尾只有\n\r(不包含空格和制表位這樣的空白位)。
          對于含有空格或制表位的“空”行,\n[\s| ]*\r可以全部去除。  回復  更多評論
            
          # re: 正則表達式刪除空行[未登錄]
          2010-06-24 12:11 | test
          你的方法很明顯不對, 不知道你怎么測試的。。  回復  更多評論
            
          # re: 正則表達式刪除空行
          2011-08-03 09:02 | ethanq
          如果只是刪除空行,而不刪除下一行前邊的空格,還保持原格式,只是刪除其中的空行,不讓都左對齊。我記得好像有個[],有個做的到。  回復  更多評論
            
          # re: 正則表達式刪除空行[未登錄]
          2011-08-16 16:31 | bob
          javascript可以通過。

          程序沒有問題  回復  更多評論
            
          # re: 正則表達式刪除空行
          2012-02-22 23:48 |
          看君一帖勝讀好多天的書啊,謝謝。  回復  更多評論
            
          # re: 正則表達式刪除空行[未登錄]
          2013-04-15 16:27 | 劉偉
          不錯!支持了  回復  更多評論
            
          # re: 正則表達式刪除空行
          2013-06-08 16:36 | QQ46984344
          我想知道怎么用這個工具寫個正則表達式來刪除文本里邊的漢字和特殊符號 只保留英文字母  回復  更多評論
            
          # re: 我的經驗正則表達式刪除空行[未登錄]
          2015-01-28 10:29 | john
          我正在匹配的空行用網上各種方法仍然不行,可能含有特殊字符,只好自己想,用下列方法可以匹配任意特殊看不到文字的空行(^\s*|\s*|\s*$),不敢自己享用,與大家分享  回復  更多評論
            
          # re: 正則表達式刪除空行
          2015-04-23 20:31 | softy
          不管是\n\r 還是 \n[\s| ]*\r,都無法刪除文件開始的空行,算個bug吧  回復  更多評論
            
          主站蜘蛛池模板: 泰顺县| 古浪县| 五莲县| 皮山县| 东城区| 楚雄市| 高淳县| 凤山县| 龙井市| 樟树市| 平潭县| 随州市| 靖西县| 封开县| 新建县| 呼和浩特市| 子洲县| 叙永县| 开封县| 新巴尔虎左旗| 商洛市| 安仁县| 即墨市| 柳林县| 栾川县| 姚安县| 丰顺县| 汉沽区| 上林县| 临洮县| 宣恩县| 白银市| 大厂| 婺源县| 安阳市| 宜城市| 广水市| 茂名市| 武穴市| 竹山县| 定南县|