加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

正则表达式更改缩进级别中的空格数

发布时间:2020-12-14 06:27:49 所属栏目:百科 来源:网络整理
导读:假设你有一些这样的线条 1 int some_function() {2 int x = 3; // Some silly comment 等等.缩进用空格完成,每个缩进都是两个空格. 您想要将每个缩进更改为三个空格.简单的正则表达式 s/ {2}/ /g 不适合你,因为这会改变一些非空格;在这种情况下,它会将之前的
假设你有一些这样的线条
1  int some_function() {
2    int x = 3;  // Some silly comment

等等.缩进用空格完成,每个缩进都是两个空格.

您想要将每个缩进更改为三个空格.简单的正则表达式

s/ {2}/   /g

不适合你,因为这会改变一些非空格;在这种情况下,它会将之前的两个空格更改为一些愚蠢的注释到三个空格,这是不需要的. (如果在行的后端对齐了表或注释,这会变得更糟)

你不能简单地使用

/^( {2})+/

因为你会替换什么?我不知道一个简单的方法来找出一个正则表达式匹配的次数,所以我们不知道插入多少个改变的缩进.

您可以随时逐行删除缩进,测量它们,构建一个新的缩进字符串,并将其粘贴到行上,但是如果有正则表达式则会更简单.

是否有正则表达式替换如上所述的缩进级别?

在某些正则表达式中,您可以使用lookbehind:
s/(?<=^ *)  /   /g

在所有其他口味中,您可以反转字符串,使用前瞻(所有口味支持)并重新反转:

s/  (?= *$)/   /g

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读