Come posso usare regex per sostituire i caratteri non di parole in uno specifico pezzo di stringa?
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?
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.