Visual Studio正则表达式查找/替换通配符

时间:2014-05-22 21:06:00

标签: regex visual-studio

我正在使用visual studio中的find / replace选项。

我有这个:

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",包含在选择中?它应该在通配符之后的",的第一个实例上终止。

1 个答案:

答案 0 :(得分:2)

模式贪婪:".*",

这与名称匹配,但继续"AZ",,因为它也匹配。它停在那里,因为Abbreviation是以逗号结尾的最后一件事。

要使其非贪婪使用:".*?"额外?表示它现在匹配零个或多个字符,但尽可能少。所以现在当它遇到第一个带双引号的项目以逗号结尾时,它将正确地停在"Arizona",

或者,您可以使用new GeoState { Name = "[^"]+", - 此处[^"]+部分是一个负字符类,它将匹配任何不是双引号的字符,因此它将在第一组中正确停止关闭双引号。