Comment utiliser regex pour remplacer des caractères autres que des mots dans un morceau de chaîne spécifique?

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

  •  05-07-2019
  •  | 
  •  

Question

J'ai un fichier texte avec une ligne comme celle-ci:

SendersTimeSeriesIdentification: COMPANY_A/COMPANY_B/REF_7/20090505

Je souhaite remplacer tous les caractères non verbaux de la partie valeur par le caractère n , comme suit:

SendersTimeSeriesIdentification: COMPANYnAnCOMPANYnBnREFn7n20090505

Mais il existe des chaînes similaires dans tout le fichier, qui doivent rester intactes. Un exemple étant:

MessageIdentification: REF_7/VER_1/20090505

Je pense que je dois utiliser lookbehind et je suis arrivé à cette tentative (VB.NET):

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

Cela ne fonctionne pas comme je le voudrais. Donc mes questions sont:
Est-il possible de remplacer tous les caractères autres que des mots dans un morceau de chaîne spécifique par un seul appel Regex.Replace? Comment?

Était-ce utile?

La solution

Essayez celui-ci:

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

Ceci remplace tous les caractères \ W et _ par "& 0;" " après "SendersTimeSeriesIdentification:".

Autres conseils

Plutôt que de remplacer une seule expression rationnelle, je scindais le fichier en lignes, puis ne traitais que les lignes commençant par "SendersTimeSeriesIdentification:". De cette façon, le remplacement de regex est simple et agréable.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top