/ / Java: plusieurs correspondances RegEx dans le même 'fragment' - java, regex

Java: RegEx Plusieurs correspondances dans le même fragment - java, regex

J'essaie d'écrire un RegEx qui capturerait les deux instances de "csv" délimitées par des virgules dans la chaîne "csv, csv, csv, csv" et les remplacer par "xml".

Donc, ma sortie serait "csv, xml, xml, csv".

Le problème que je rencontre est que mon RegExne capture que la première instance de csv, et comme la "virgule" à la fin du premier match serait également le premier délimiteur du second match, elle ne sera pas capturée.

RegEx = ", csv," (exemple assez simple).

Exemple 2:

RegEx = "(, chien,)"

Entrée "chien, chien, chien, chien"

Sortie "chien, chat, chat, chien"

Edit: j'ai trouvé ce que je cherchais, en utilisant les fonctions d'anticipation et d'anticipation. RegEx = "(? <=,) Dog (? =,)" Ferait l'affaire.

Réponses:

0 pour la réponse № 1

Utilisez des regards, qui affirment, mais ne consomment pas:

String replaced = str.replaceAll("(?<=,)csv(?=,)", "xml");

0 pour la réponse № 2

Faire usage de lookaround:

remplacer

(?<=,)xml(?=,)

avec

csv

Démo https://regex101.com/r/ft7SQT/1