2014-10-06 66 views
2

好的,这可能是我错过的一个愚蠢的东西,一个未经检查的框或什么东西,但是这会让我疯狂,因为我已经多次它的工作原理,现在不是,我想我会疯了。Visual Studio 2013使用REGEX查找和替换不能正确替换

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

所以我有什么是: FIND:boxxy \ d REPLACE:squary $ 1

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

任何帮助将不胜感激。

回答

2

您需要内()封闭搜索表达式:

(boxxy\d) REPLACE:squary$1

背后的原因它是$1是指一个捕捉集团和捕获组在正则表达式使用()创建

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

+0

我知道这是非常愚蠢的事情,我不敢相信我以前没有看到它,而且我写了100次。谢谢。 – blacktone 2014-10-06 22:00:03

1

Dalorzo有正确的想法,但对这个具体的例子说错了。

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

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

正确的方法是boxxy(\d) REPLACE squarry$1

相关问题