2014-10-06 71 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