2011-06-28 126 views
0

一個子這裏是我的xyz.csproj文件中的一行:替換使用正則表達式

<Reference Include="SomeDLLNameHere, Version=10.2.6.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a, processorArchitecture=MSIL" /> 

所有我需要做的是更換「版本= 10.2.6.0」到「版本= 11.0.0.0」。

我需要這樣做的程序是使用VBScript的VSBuild,所以我相信。

問題是我無法硬編碼'舊'版本號。因此,我需要更換如下:

<Reference Include="SomeDLLNameHere, Version=10.2.6.0, 

爲此我需要一個正則表達式,將記住,在引用的例子中,10.2.6.0可以是任何上述軸承相匹配。

我相信,這將選擇包括和

之間
'<Reference Include="SomeDLLNameHere' and '>' is what I need. 

有類似的要求,但沒有其他引用文本中的正則表達式似乎爲我頂工作。

我通常會使用C#來做這種事情,VBScript /正則表達式是我避免的瘟疫。

+2

's/Version = [\ d。] +/Version = 11.0.0.0/g'會將每個版本號替換爲新版本號,不知道如何在VBScript中執行它。另外,如果人們幫助你,你應該接受更多的答案。 – NorthGuard

+0

感謝inTide,但有很多dll的引用,我只需要更新其中的一個,不是全部。 – David

回答

1

對於大多數正則表達式的味道,你會使用這樣的:

<Reference Include="SomeDLLNameHere.*?/> 

對於Visual Studio,我不知道,如果*?會工作...試試這個:

+0

感謝您的建議,但我沒有在代碼中這樣做。我只需要光禿禿的正則表達式。 – David

+0

你是在查找/替換對話框中執行它嗎?這有一個非常不同的語法。 –

+0

@David,我更新了正則表達式。 –

0

這正則表達式模式應該工作

"(<Reference[^>]+Version=)([^,]+)," 

應用使用VBScript

str1 = "<Reference Include=""SomeDLLNameHere, Version=10.2.6.0," 

    ' Create regular expression. 
    Set regEx = New RegExp 
    regEx.Pattern = "(<Reference[^>]+Version=)([^,]+)," 

    ' Make replacement. 
    ReplaceText = regEx.Replace(str1, "$111.0.0.0,") 
    WScript.echo ReplaceText 

給出正確的結果

<Reference Include="SomeDLLNameHere, Version=11.0.0.0, 

UPDATE

如果你需要Version=和標籤使用,而不是>結束之間相匹配的東西,

"(<Reference[^>]+Version=)([^>]+)>" 
0

在C#或VBScript中使用正則表達式幾乎相同,因爲它都涉及到開發正則表達式。像這樣的東西可能會有所幫助: <Reference\s+Include\s*=\s*\".+\",\s*Version\s*=\s*.+,

不確定在csproj文件中有關區分大小寫和空格的規則是什麼,但是這涵蓋了前面描述的形式。請注意,「+」運算符表示一個或kleen。