¿Cómo uso regex para reemplazar caracteres que no son palabras en una cadena específica?
Pregunta
Tengo un archivo de texto con una fila como esta:
SendersTimeSeriesIdentification: COMPANY_A/COMPANY_B/REF_7/20090505
Me gustaría reemplazar todos los caracteres que no son palabras en la parte del valor con el carácter n
, así:
SendersTimeSeriesIdentification: COMPANYnAnCOMPANYnBnREFn7n20090505
Pero hay cadenas similares en todo el archivo, que deben permanecer intactas. Un ejemplo es:
MessageIdentification: REF_7/VER_1/20090505
Creo que debo usar mirar atrás, y llegué a este intento (VB.NET):
Regex.Replace(fileContentString, "(?<=SendersTimeSeriesIdentification: )(\W)", "0")
Esto no funciona como me gustaría. Entonces mis preguntas son:
¿Es posible reemplazar todos los caracteres que no son palabras en una cadena específica con solo una llamada Regex.Replace? ¿Cómo?
Solución
Pruebe este:
Regex.Replace(fileContentString, "(?<=SendersTimeSeriesIdentification:\s.*)[_\W]", "0")
Esto reemplaza todos los caracteres \ W y _ con " 0 " después de " SendersTimeSeriesIdentification: " ;.
Otros consejos
En lugar de hacer un reemplazo de expresiones regulares, dividiría el archivo en líneas, luego solo procesaría líneas que comiencen con " SendersTimeSeriesIdentification: " ;. De esa manera, el reemplazo de expresiones regulares es agradable y simple.