使用Regex替换字符串以将ltr填充转换为rtl

时间:2015-11-17 11:51:22

标签: regex visual-studio replace

我正在使用此正则表达式:

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;

有没有办法可以用"查找和替换"替换它们。对话框?

1 个答案:

答案 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
  • ; - 一个字面分号。