将每 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 个换行符替换为文件中的制表符的主要内容,如果未能解决你的问题,请参考以下文章