2014-09-02 98 views
3

是否可以使用正則表達式搜索/替換將每4行換行符替換爲UE或NPP中的選項卡?將每n換行符替換爲文件中的製表符

文件之前:

#12 
    ab 
    cde 
    ef 
    #34 
    ghij 
    ijk 
    kl 
    #5678 
    uv 
    w 
    xyz 
... 

後應更換

#12 ^t ab ^t cde ^t ef 
#34 ^t ghij ^t ijk ^t kl 
#5678 ^t uv ^t w ^t xyz 
+0

是像 「AB」 始終隻字行?或者可能有數字?或者:新的第一列始終以#開頭? – frlan 2014-09-02 11:17:30

+0

爲什麼不用記事本++宏來做呢? – Miki 2014-09-02 11:22:28

+0

你可以分兩步以上實現: 1.Find#與\ r \ n#替換 2.Find \ S +與\ t – 2014-09-02 11:32:42

回答

4

這裏有一個方法來完成這項工作:

查找內容:(.+)\R(.+)\R(.+)\R(.+\R)?
替換:$1\t$2\t$3\t$4

檢查Regular Expression
不檢查dot matches newline
並單擊Replace All

說明:

(.+)\R : Capture in group 1 everything until a line break (excluded) 
(.+)\R : Capture in group 2 everything until a line break (excluded) 
(.+)\R : Capture in group 3 everything until a line break (excluded) 
(.+\R)? : Capture in group 4 everything until a line break (included), optional 

\R代表任何類型的換行符的(即\r\n\r\n

+2

你能解釋一下嗎? – 2014-09-02 11:46:44

+0

@ user3214779:可以嗎? – Toto 2014-09-02 11:57:08

+0

明白了。感謝您的解釋:) – 2014-09-02 12:01:52

1

[\n\r](?!#)會做 和\t

它將取代CRLF更換,如果後面沒有#的標籤時,使用Windows編碼。 (?!#)是排除任何\ n或\ r後跟一個#(上下一行)負前瞻

小心將標籤之前留出空間,如果你真的想你可能不得不每場之間只有標籤將編碼更改爲只有\ n或\ r(linux或mac)。

+0

取代它不會帶來#\ d到下一行.. – 2014-09-02 11:38:19

+0

它在我的N ++中按預期工作 – Tensibai 2014-09-02 11:54:40

+0

@Surinderツ就我所知,#123沒有被移動,只是以下幾行。用標籤替換回車符(除非最後一個)使#123開始的行。我編輯解釋正則表達式(忘記它,對不起) – Tensibai 2014-09-02 12:06:48

相關問題