我正在使用这个正则表达式:
padding:(\s*(\d+px\s*|0\s*)){4}
在 Visual Studio 的“查找和替换”中查找具有四个值的填充样式。 现在我想用第四个值替换第二个值,如下所示:
padding: 1px 0 3px 4px;
padding: 1px 2px 0 4px;
padding: 1px 2px 3px 0;
将此值更改为:
padding: 1px 4px 3px 0;
padding: 1px 4px 0 2px;
padding: 1px 0 3px 2px;
有没有办法用“查找和替换”对话框替换它们?
最佳答案
请注意 (\s*(\d+px\s*|0\s*)){4}
捕获 (\s*(\d+px\s *|0\s*))
子模式 4 次,捕获结果存储在只能使用 .NET 代码检索的 CaptureCollection
中。在搜索和替换功能中,您只能通过反向引用访问组。
您可以使用:
查找:(填充:\s*)(\d+(?:px)?)\s*(\d+(?:px)?)\s*(\d+(?:px)? )\s*(\d+(?:px)?);
替换:$1$2 $5 $4 $3
参见demo
结果:
padding: 1px 4px 3px 0
padding: 1px 4px 0 2px
padding: 1px 0 3px 2px
注意,我决定对替换中的空格进行硬编码,但您也可以在 \s*
周围设置捕获组以将它们复制到结果字符串中。
正则表达式分割:
(padding:\s*)
- 第 1 组匹配padding:
加 0 个或多个空格(\d+(?:px)?)
- 第 2 组匹配 1 个或多个数字 (\d+
) 以及可选px
\s*
- 0 个或多个空格(\d+(?:px)?)\s*(\d+(?:px)?)\s*(\d+(?:px)?)
- 另外 3 个捕获索引为 3、4、5 的组;
- 文字分号。
关于regex - 使用正则表达式替换字符串以将 ltr 填充转换为 rtl,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33756203/