ho questo requisito - per una stringa di input come quello mostrato sottoSostituire più gruppi di cattura utilizzando regexp con java
8This8 is &reallly& a #test# of %repl%acing% %mul%tiple 9matched9 9pairs
desidero nudo i confini di parola abbinati (dove la coppia corrispondente è 8 o & o% ecc) e comporta la seguente
This is really a test of repl%acing %mul%tiple matched 9pairs
Questa lista di caratteri che viene utilizzato per le coppie possono variare es 8,9,%, # etc e solo le parole che corrispondono all'inizio e alla fine di ogni tipo saranno rimosse da quei caratteri, con lo stesso carattere incorporato nella parola rimanente dove si trova.
Utilizzando Java posso fare un modello come \\b8([^\\s]*)8\\b
e la sostituzione di $ 1, per catturare e sostituire tutte le occorrenze di 8 ... 8, ma come faccio a fare questo per tutti i tipi di coppie?
posso fornire un modello come la \\b8([^\\s]*)8\\b|\\b9([^\\s]*)9\\b
.. e così via, che corrisponderà tutti i tipi di coppie corrispondenti * 8,9, ..), ma come faccio a specificare un gruppo 'variabile' sostituzione -
per esempio se la partita è 9 ... 9, la sostituzione dovrebbe essere $ 2.
Posso ovviamente eseguirlo attraverso più di questi, ognuno sostituendo uno specifico tipo di coppia, ma mi chiedo se c'è un modo più elegante.
Oppure esiste un modo completamente diverso di affrontare questo problema?
Grazie.
Grazie. L'uso del riferimento posteriore e dei gruppi di cattura su 2, come suggerito da te e da un'altra persona, sembra averlo inchiodato. Sto usando il seguente (? ssen
@ssen esattamente quello che hai ottenuto. Molto più ridotto uno '(?