【问题标题】:Visual Studio 2013 Find and Replace using REGEX doesn't properly replace使用 REGEX 查找和替换的 Visual Studio 2013 无法正确替换
【发布时间】:2014-12-01 05:44:28
【问题描述】:

好的,这可能是我错过的一些愚蠢的东西,一个未选中的框或其他东西,但它让我发疯了,因为我之前已经做过很多次并且它有效,现在它不是,我认为我要疯了。

我需要替换我的文件 (css) 中某个类的所有实例。类,boxxy1、boxxy2、boxxy3等需要改为squary1、squary2、squary3等。

所以我拥有的是: 查找:boxxy\d 替换:方形$1

然而,当我点击 find 时,它会找到 boxxy 的所有实例,但是当我点击 replace 时,我最终得到的是每一个都为 1 美元。我在这里做错了什么?

任何帮助将不胜感激。

【问题讨论】:

    标签: regex replace visual-studio-2013 find


    【解决方案1】:

    您需要将搜索表达式包含在() 中:

    (boxxy\d)替换:squary$1

    其背后的原因是$1 指的是一个捕获组,而捕获组是在RegEx 中使用() 创建的

    捕获组是一种将多个字符视为一个单元的方法。它们是通过将要分组的字符放在一组括号内来创建的。例如,正则表达式 ([0-9]) 创建一个包含从 0 到 9 的数字的单个组。与捕获组匹配的输入字符串部分将保存在内存中,以供以后通过反向引用调用。

    【讨论】:

    • 我知道这是非常愚蠢的事情,我不敢相信我以前没有看到它,我写了 100 遍。谢谢。
    【解决方案2】:

    Dalorzo 的想法是正确的,但在这个具体的例子中说错了。

    对于字符串“boxxy1”和“boxxy2”,(boxxy\d) REPLACE squary$1 将返回 squaryboxxy1squaryboxxy2

    这是因为$1 指的是定义的唯一一个捕获组 (boxxy\d)。什么结果是squery$1 重新评估为squary(boxxy\d)

    正确的做法是boxxy(\d) REPLACE squary$1

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-09-15
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-11-29
      • 2010-10-23
      相关资源
      最近更新 更多