Espressione .NET Regex per la ricerca di & amp; Sostituzione di qualsiasi valore ProductName in un file .vdproj in C #

StackOverflow https://stackoverflow.com/questions/1817108

  •  08-07-2019
  •  | 
  •  

Domanda

Sto provando a scrivere un'attività di estensione NAnt che può aggiornare diverse impostazioni all'interno di un file .vdproj di installazione generato da Visual Studio 2003 e apprezzerei l'aiuto con quanto segue.

In particolare, vorrei usare un'espressione RegEx per trovare e, se trovato, sostituire qualsiasi valore stringa valore assegnato al valore ProductName con un nuovo valore stringa nella sua interezza.

Sto cercando un'espressione RegEx impostata per cambiare " ProductName " a qualsiasi altro valore senza dover fare affidamento su qualcosa di diverso da quello che la stringa cercata inizia con "ProductName" = " 8 " ;: e quindi ha 1 o più caratteri e termina con un " marchio. Ho provato quanto segue inutilmente:

Prima di eseguire il seguente frammento di codice, viene visualizzato il ProductName del file .vdproj:

"ProductName" = "8:My Simple .NET Application"

... e il frammento di codice in C #:

string _theProductName = "My Other Native Application";

Regex productNameExpression = new Regex( @"(?:\""ProductName\"" = \""8:*)" );

_theProjectFileContents = 
productNameExpression.Replace(_theProjectFileContents, 
                              "\"ProductName\" = \"8:" + _theProductName + "\"" );

bool updatedProductName = 
(_theProjectFileContents.IndexOf(_theProductName) >= 0);

Dopo aver eseguito il frammento di codice sopra riportato, il ProductName del file .vdproj ora recita:

"ProductName" = "8:My Simple .NET Application"My Other Native Application"

Chiudi, ma mi aspettavo " La mia altra applicazione nativa " per sostituire " My Simple .NET Application " ;, e non aggiungervi.

Qualsiasi approfondimento e aiuto sarebbe molto apprezzato.

È stato utile?

Soluzione

Sei quasi arrivato, manca solo un singolo.
Cambia così la tua regex e la felicità dovrebbe seguire ...

Regex productNameExpression = new Regex(@"(?:\""ProductName\"" = \""8:.*)"); 

Nota il. dopo l'8:

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top