【问题标题】:Visual studio Regex for batch replace用于批量替换的 Visual Studio 正则表达式
【发布时间】:2019-04-06 03:14:26
【问题描述】:

我正在尝试在 Visual Studio 2017 中查找和替换一些字符。 例如,我想改变这一行:

rs.Fields("F1") = rs.Fields("F2"): 

进入这一行:

rs.Fields["F1"].Value = rs.Fields["F2"].Value; 

所以我需要按照这个来替换:

( --> [
) --> ].Value
: --> ;

首先我选择要更改的行,然后使用此正则表达式找到要更改的字符:

([():])

这很好。但是我不明白如何正确地进行替换。

【问题讨论】:

  • 模式的已知部分是什么?
  • Fields("something") 几乎是标准的,但也可以是 Fields(myVar)。
  • 好的,所以我需要对所有不是 () 或 ; 的内容进行分组。发表您的评论作为答案,我会接受它

标签: regex visual-studio replace


【解决方案1】:

你可以使用

查找\b(rs\.Fields)\(([^()]*)\)(\s*=\s*)(rs\.Fields)\(([^()]*)\):
替换$1[$2].Value$3$4[$5].Value;

regex demo

详情

  • \b(rs\.Fields) - 第 1 组(后来用替换中的 $1 引用):rs.Fields 子字符串(\b 是匹配 rs 而不是 rs 中的单词边界,例如 brs)李>
  • \( - 一个(
  • ([^()]*) - 第 2 组:除 () 之外的任何 0+ 个字符
  • \) - 一个)
  • (\s*=\s*) - 第 3 组:= 包含可选空格
  • (rs\.Fields) - 第 4 组:rs.Fields
  • \( - 一个(
  • ([^()]*) - 第 5 组:除 () 之外的任何 0+ 个字符
  • \) - 一个)
  • : - 冒号。

【讨论】:

    【解决方案2】:

    您可以使用以下正则表达式:

    (rs.Fields)\(([^)]*)\)(\s=\srs.Fields)\(([^)]*)\):
    

    首先创建一个包含“re.Fields”的组,然后是一个左括号,然后是任何不是右括号的字符(在第 1 组中),然后是一个右括号。 然后它创建一个与空白匹配的新组,后跟一个等号,然后重复整个事情。

    然后用以下内容替换:

    $1[$2].Value$3[$4].Value
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2020-05-08
      • 2011-12-21
      • 1970-01-01
      • 2011-03-09
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-11-29
      相关资源
      最近更新 更多