将每 n 个换行符替换为文件中的制表符

Posted

技术标签:

【中文标题】将每 n 个换行符替换为文件中的制表符【英文标题】:Replace every n linebreak to tabs in a file 【发布时间】:2014-10-26 15:24:57 【问题描述】:

是否可以用正则表达式搜索/替换替换 UE 或 NPP 中的每 4 行换页符?

之前的文件:

    #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

【问题讨论】:

像“ab”这样的行总是只有字符吗?还是有可能的数字?或者:新的第一列总是以#开头吗? 为什么不用notepad++宏来做呢? 以上可以分两步实现: 1.查找#并替换为\r\n# 2.查找\s+并替换为\t 【参考方案1】:

[\n\r](?!#) 会的 并替换为\t

在使用 windows 编码时,如果没有后跟 # by tab,它将替换 crlf。 (?!#) 是一个否定的前瞻,它排除任何 \n 或 \r 后跟 # (在下一行)

注意它会在制表符之前留下一个空格,如果您真的希望每个字段之间只有制表符,您可能必须将编码更改为只有 \n 或 \r(linux 或 mac)。

【讨论】:

@Surinderツ 据我了解,#123 没有被移动,只是以下几行。用制表符替换回车符(除非最后一个)使行以 #123 开始。我编辑解释了正则表达式(忘记了,抱歉)【参考方案2】:

这是完成这项工作的一种方法:

查找内容:(.+)\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

【讨论】:

@user3214779:可以吗? 知道了。感谢您的解释:) 嗨,对不起,我最近几天很忙,感谢您的解决方案。它可以工作,除了:有一些没有任何字符的空行和两个或多个换行符 [crlf][crlf] @gsxr1300:只需将.+ 替换为.*

以上是关于将每 n 个换行符替换为文件中的制表符的主要内容,如果未能解决你的问题,请参考以下文章

notepad 如何将【001】替换成 第001章 ?

请问notepad++如何将换行替换成其它符号?

环境变量IFS

c#如何去除字符串中的空格,回车,换行符,制表符

c#如何去除字符串中的空格,回车,换行符,制表符

怎样搜索或替换换行符?