2014-05-22 6 views
3

J'utilise l'option de recherche/remplacement dans Visual Studio.Visual Studio Regex Rechercher/Remplacer un caractère générique

J'ai ceci:

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

et que vous voulez changer à ceci:

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

Pour toutes les occurrences d'états dans mon dossier. Suppression effective de la propriété Name. dans l'exemple ci-dessus,

new GeoState { 

Cependant, qui trouve les éléments suivants:

La découverte regex/remplacer l'expression que je suis en cours d'exécution est la suivante:

Recherche:

new GeoState { Name = ".*", 

Remplacer:

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

changer à ceci:

new GeoState { Country = "US" }, 

Pourquoi Abbreviation = "AZ", inclus dans la sélection? Il devrait se terminer sur la première instance de ", après le caractère générique.

+0

VS prend-il en charge la forme non-gourmande 'Name =". *? "'? VS prend-il en charge les classes de caractères niées telles que 'Name =" [^ "] *" '? – usr2564301

+0

Plus d'informations sur les expressions Visual Studio: http://msdn.microsoft.com/fr-fr/library/2k3te2cs.aspx – kspearrin

Répondre

2

Le modèle est gourmand: ".*",

Cela correspond au nom, mais continue à "AZ", depuis qui correspond aussi. Il s'arrête là puisque Abbreviation est la dernière chose qui se termine par une virgule.

Pour le rendre usage non gourmand: ".*?" Le ? supplémentaire signifie qu'il correspond maintenant à zéro ou plusieurs caractères, mais aussi peu que possible. Alors maintenant, quand il rencontre le premier élément avec des guillemets qui se termine par une virgule, il s'arrêtera correctement à "Arizona",.

Alternativement, vous pouvez utiliser new GeoState { Name = "[^"]+", - ici la partie [^"]+ est une classe de caractères négative qui correspond à n'importe quel caractère qui n'est pas un guillemet double, donc il s'arrêtera correctement au premier ensemble de guillemets de fermeture.

+0

! Merci! – kspearrin

Questions connexes