2014-05-22 50 views
3

我在visual studio中使用查找/替換選項。Visual Studio正則表達式查找/替換通配符

我有這樣的:

new GeoState { Name = "Arizona", Abbreviation = "AZ", Country = "US" }, 

並希望將它改成這樣:

new GeoState { Abbreviation = "AZ", Country = "US" }, 

對於我的檔案狀態的所有地方。有效地刪除Name屬性。

正則表達式查找/替換表達我運行是這樣的:

查找:

new GeoState { Name = ".*", 

替換:

new GeoState { 

然而,在上面的例子中,發現了以下內容:

new GeoState { Name = "Arizona", Abbreviation = "AZ", 

將其更改爲這樣:

new GeoState { Country = "US" }, 

爲什麼包括在選擇Abbreviation = "AZ",?它應該在通配符後的第一個",時終止。

+0

是否支持非貪婪形式'Name =「。*?」'? VS支持否定字符類,比如'Name =「[^」] *「'? – usr2564301

+0

有關Visual Studio表達式的更多信息:http://msdn.microsoft.com/en-us/library/2k3te2cs.aspx – kspearrin

回答

2

的模式是貪婪的:".*",

這個名稱相匹配,但繼續"AZ",因爲這也符合。它停在那裏,因爲Abbreviation是以逗號結尾的最後一個東西。

要使它非貪婪用途:".*?"額外?意味着現在匹配零個或多個字符,但儘可能少。所以,現在遇到第一個雙引號以逗號結尾的項目時,它會在"Arizona",處正確停止。

或者,您可以使用new GeoState { Name = "[^"]+", - 這裏的[^"]+部分是一個否定字符類,它將匹配任何不是雙引號的字符,因此它將在第一組雙引號中正確停止。

+0

就是這樣! 謝謝! – kspearrin