2014-09-02 99 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