我正在尝试编写一个简单的命令行脚本来修复一些空白,并且需要用制表符替换出现的两个空格,但前提是它出现在行的开头(仅以其他制表符为前缀。)
我想出了 s/^(\t*)/\1\t/g;
如果我通过多次传递,它会完美地工作,但我对 perl 了解不够知道如何循环直到字符串没有改变,或者是否有正则表达式方法来处理它。
我唯一的想法是使用 lookbehind 但它不能是可变长度的。如果非正则表达式的解决方案足够短以适应快速命令行脚本,我愿意接受它。
作为引用,当前的 perl 脚本是这样执行的:
perl -pe 's/^(\t*) /$1\t/g'
最佳答案
您可以使用 1 while s/^(\t*)/$1\t/g;
来重复该模式,直到没有要进行的更改为止。
关于regex - 我怎样才能重复一个 Perl 正则表达式直到没有任何变化?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5459053/