2011-11-03 2 views
1

J'ai plusieurs sections avec des ID.Advanced Visual Studio RegEx Remplacer

<section id="01"></section> 
<section id="02"></section> 
<section id="03"></section> 

Ce que je voudrais faire est et à remplacer est avec lui-même tous ces ids + 1, soit 1 devient 2, 2 devient 3, etc.

Je suis arrivé aussi loin que:

find: 
id="{[0-9][0-9]}" 
-- 
replace: 
\0 
+0

- Je frémis d'appeler la syntaxe de recherche Visual Studio une expression régulière réelle (même si c'est techniquement_) ... blech! –

+0

oh yeah - cela ne peut absolument pas être fait de façon fiable avec les implémentations normales de regex (y compris ... ... Visual Studio), même s'il y a des astuces qui pourraient fonctionner dans certaines conditions, très limitées ... un peu. .. –

Répondre

0

Il suffit d'ajouter le dernier et de supprimer la première entrée.

Ou vous pouvez faire correspondre deux entrées à la fois et utiliser backrefs, si ce ne sont pas des identifiants continius, mais seulement des nombres aléatoires.

+0

Je n'arrivais pas à faire fonctionner ça ... à la fin, j'ai juste utilisé des décimales. par exemple. '

' – evolutionxbox

1

N'utilisez pas RegEx.

Chargez-le en utilisant XmlDocument et utilisez XPath. Quelque chose comme:

Dim tDoc as XmlDocument = New XmlDocument(xmlfilename) 
For Each tNode As XmlNode In tDoc.SelectNodes("//sections/section") 
    tNode.Attributes("id").Value = String.Format("{0:D2}", Int16.Parse(tNode.Attributes("id").Value) + 1) 
Next 

tDoc.Save(path) 
+0

Ouais, je ne pense pas regex (au moins à la recherche « VS et remplacerai) a la capacité d'effectuer des calculs sur les résultats ... seulement des remplacements simples. – danyim

+0

@danyim: vous pourriez faire une sorte de boucle bâtarde sur les matchs regex, en commençant par le dernier match et en allant de l'avant. Mais un homme qui serait laid. –

Questions connexes