/ / Iterazione su un elenco in una sostituzione di espressioni regolari - regex, ant

Iterare su un elenco in una sostituzione di espressioni regolari - regex, ant

Ho una stringa con un prefisso seguito da un elenco di almeno un suffisso eventualmente vuoto. I suffissi stessi sono preceduti da due punti. Né il prefisso né il suffisso devono contenere due punti.

Esempio (1) per un suffisso vuoto:

x:

Esempio (2) per due suffissi non vuoti ("a" e "b") e un suffisso vuoto:

x:a::b

Il espressione regolare per questo modello è:

([^:]+)(:([^:]*))*

La prima partita cattura il prefisso e la partita (3 + 2n) th cattura i suffissi (n = [0,1,2, ...]).

Nella mia sostituzione vorrei aggiungere un prefisso a ciascun suffisso. L'esempio (1) dovrebbe produrre:

x

E l'esempio (2) dovrebbe produrre:

xa
x
xb

Come devo specificare l'espressione sostitutiva?

Il mio problema è che il primo rimpiazzo mangiail prefisso E dopo questo il secondo sostituto non vede più il prefisso. Devo conservare il prefisso per le restanti sostituzioni. Come si può fare?

risposte:

1 per risposta № 1

Penso che estrarre prima il prefisso e poi fare il secondo sostituto. Renderà il codice più facile da leggere e dovrebbe essere facilmente sostituibile a quel punto.