我正在使用此正则表达式:
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;
有没有办法可以用"查找和替换"替换它们。对话框?
答案 0 :(得分:2)
请注意(\s*(\d+px\s*|0\s*)){4}
捕获(\s*(\d+px\s*|0\s*))
子模式4次,捕获存储在只能使用.NET代码检索的CaptureCollection
中。在搜索和替换功能中,您只能使用反向引用访问组。
您可以使用:
查找:(padding:\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 ;
- 一个字面分号。