如何在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个制表符任何帮助将不胜感激。
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)为
\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
vktxenjb2#
我知道这是一个老问题,但我想我会给予一个完整的正则表达式的答案(它对我很有效)。
s/^\t* {3}/\t/g
kmpatx3s3#
您可能需要/^(?: {3})*/\t/g编辑:固定
/^(?: {3})*/\t/g
3条答案
按热度按时间yhived7q1#
Perl:
例如,使用以下输入
输出(TABs替换为
\t
)为vktxenjb2#
我知道这是一个老问题,但我想我会给予一个完整的正则表达式的答案(它对我很有效)。
kmpatx3s3#
您可能需要
/^(?: {3})*/\t/g
编辑:固定