在RegEx中将空格转换为制表符

pu82cl6c  于 2023-05-01  发布在  其他
关注(0)|答案(3)|浏览(115)

如何在regex中表达以下内容:

foreach line
   look at the beginning of the string and convert every group of 3 spaces to a tab
   Stop once a character other than a space is found

这是我目前所拥有的:

/^ +/\t/g

但是,这会将每个空格转换为1个制表符
任何帮助将不胜感激。

yhived7q

yhived7q1#

Perl:

perl -pe '1 while s/\G {3}/\t/gc' input.txt >output.txt

例如,使用以下输入

nada
   three spaces
    four spaces
   three   in the middle
      six space

输出(TABs替换为\t)为

$ perl -pe '1 while s/\G {3}/\t/gc' input | perl -pe 's/\t/\\t/g'
nada
\tthree spaces
\t four spaces
\tthree   in the middle
\t\tsix spaces
vktxenjb

vktxenjb2#

我知道这是一个老问题,但我想我会给予一个完整的正则表达式的答案(它对我很有效)。

s/^\t* {3}/\t/g
kmpatx3s

kmpatx3s3#

您可能需要/^(?: {3})*/\t/g
编辑:固定

相关问题