Come posso usare regex per sostituire i caratteri non di parole in uno specifico pezzo di stringa?

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

  •  05-07-2019
  •  | 
  •  

Domanda

Ho un file di testo con una riga come questa:

SendersTimeSeriesIdentification: COMPANY_A/COMPANY_B/REF_7/20090505

Vorrei sostituire tutti i caratteri non di parole nella parte valore con il carattere n , in questo modo:

SendersTimeSeriesIdentification: COMPANYnAnCOMPANYnBnREFn7n20090505

Ma ci sono stringhe simili in tutto il file, che devono rimanere intatte. Un esempio è:

MessageIdentification: REF_7/VER_1/20090505

Penso di dover usare lookbehind e sono arrivato a questo tentativo (VB.NET):

Regex.Replace(fileContentString, "(?<=SendersTimeSeriesIdentification: )(\W)", "0")

Questo non funziona come vorrei. Quindi le mie domande sono:
È possibile sostituire tutti i caratteri non di parole in uno specifico pezzo di stringa con una sola chiamata Regex.Replace? Come?

È stato utile?

Soluzione

Prova questo:

Regex.Replace(fileContentString, "(?<=SendersTimeSeriesIdentification:\s.*)[_\W]", "0")

Questo sostituisce tutti i caratteri \ W e _ con " 0 " dopo " SendersTimeSeriesIdentification: " ;.

Altri suggerimenti

Invece di fare come una singola regex sostitutiva, dividerei il file in righe, quindi elaborerei solo le righe che iniziano con " SendersTimeSeriesIdentification: " ;. In questo modo la sostituzione di regex è piacevole e semplice.

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