Nel codice seguente:Java regex - sovrapposizione partite
public static void main(String[] args) {
List<String> allMatches = new ArrayList<String>();
Matcher m = Pattern.compile("\\d+\\D+\\d+").matcher("2abc3abc4abc5");
while (m.find()) {
allMatches.add(m.group());
}
String[] res = allMatches.toArray(new String[0]);
System.out.println(Arrays.toString(res));
}
Il risultato è:
[2abc3, 4abc5]
mi piacerebbe che fosse
[2abc3, 3abc4, 4abc5]
Come può essere raggiunto?
Avresti bisogno di cercare a partire da ogni indice; usa il metodo find (int startingIndex) e cerca a partire da ogni posizione del personaggio. Naturalmente, è probabile che tu trovi troppe corrispondenze ... Supponendo che tu voglia iniziare a ogni numero, potresti provare a combinare un'iterazione su Matcher.find (String.indexOf (cifre, indice)) per tutti gli indici corrispondenti. – user1676075
Suppongo che, se si tratta di cifre singole, è possibile eseguire il backup dalla posizione di partenza della partita e trovare da lì per la prossima partita. – user1676075
Per l'input '" 12abc13abc14abc15 "', vuoi '[12abc13, 2abc13, 13abc14, 3abc14, 14abc15, 4abc15]' o '[12abc13, 13abc14, 14abc15]'? – johnchen902