regex - 使用正则表达式替换字符串以将 ltr 填充转换为 rtl

标签 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;

有没有办法用“查找和替换”对话框替换它们?

最佳答案

请注意 (\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/

相关文章:

Python > 将字符串变量传递到方法中

php - 奇怪的 PHP 正则表达式通知

c# - 如何一次性执行多个字符串替换?

python - 如何使用正则表达式和 lambda 表达式更改 DataFrame 列 dtype?

c# - 为什么 Json.Decode 不能处理 C# 中的数组?

visual-studio - Visual Studio 中的 ARM NEON Intrinsics 支持

c# - 以编程方式从 XML 模式生成测试 XML

Python 用句点替换缩进

regex - 如何使用正则表达式替换精确的字符串?在 DrRacket 中

php正则表达式获取href标签内的自定义url和字符串