我想从这个正则表达式获得匹配的第一个n
字符:
(\d+\s*)
基本上我想要用空格填充。所以在行中:
12345␢␢␢␢␢␢␢␢123␢␢␢␢␢␢␢
123␢␢␢␢␢␢␢␢␢12345␢␢␢␢␢␢
我想完成:
12345␢␢␢␢␢123␢␢␢␢␢␢␢
123␢␢␢␢␢␢␢12345␢␢␢␢␢
一条线上总有两个匹配,并且这些线的长度是恒定的。
答案 0 :(得分:2)
根据有关问题及其结构的额外信息,我建议采取以下步骤:
这意味着:
^(\d*\s*)(\d*\s*)$
替换为$1\r\n$2
。如果您不在Windows上,请放弃\r
,我怀疑。您应该考虑在一行末尾添加一个宏。这应该是未包含在文档其余部分中的内容(例如#
)。 $1
表示替换第一个捕获的组(括号内的内容)。因此请将其替换为$1#\r\n$2
。(^.{n}).*(#?)
并替换为$1$2
。这将捕获第一个n
符号,并在找到宏时插入宏。#\r\n
。请删除这些内容或将其替换为\0
。备注强>
(^\d*\s*)
匹配的行。#
的出现次数。它不应该包含在文件的其余部分中,至少不能包含在一行的末尾。这里也可能单次通过。
^(\d[\d\s]{n-1})[^\d]*(\d[\d\s]{n-1}).*$
匹配这些行,如果您提取第一组和第二组,这将过滤文件中所需的输出。只需将其替换为$1$2
。
答案 1 :(得分:1)
替换:
(\d[\d\s]{n-1})\s*
使用:
$1
这将替换一个数字,后跟n-1
个数字或空白字符,后跟任意数量的空白字符,匹配的内容的第一个n
字符(因此每行应获得2个匹配)。