Ich versuche, einen regulären Ausdruck zu erstellen, die mir ein paar Kombinationspaare aus einem Eingang, die mich interessieren.Regex ein Wort mit aufeinander folgenden Buchstaben zu produzieren
Wenn ich habe die folgende Eingabe ...
gibt"pppeeeople"
Ich mag würde die folgenden Permutationen ...
Menschen, ppeeople, peeople, ppeople erstellen.
Ich kann derzeit 'people' und 'ppeeople' mit den folgenden zwei REGEXs erstellen, wo das Eingabewort 'pppeeeople' ist.
String temp = word.replaceAll("(.)\\1{2,}", "$1$1"); //result ppeeople
String temp2 = word.replaceAll("(.)\\1{1,}", "$1"); //result people
aber ich möchte in der Lage sein, eine REGEX zu erzeugen, die auch das Wort mit 1 Satz von zwei consective Buchstaben, wie ‚ppeople‘ greifen kann, dann eine andere REGEX, die die erste inputed Doppelzeichensequenz überspringen und produzieren "People" und so weiter. Die Grundidee besteht darin, alle Permutationen des Wortes zu erhalten, die zwei aufeinanderfolgende Zeichen enthalten.
Ist das mit einem REGEX möglich oder soll ich einfach eine Schleife und StringBuilder in eine Liste einfügen?
Das ist nahe, aber es erzeugt Out-of-Bound-Indexfehler, und ich müsste immer noch Duplikate aus den ArrayList-Wiederholungen entfernen, zu denen ich es hinzufüge.
int index = temp.length();
for (int i = 0; i < index; i++) {
System.out.println("Index" + i + ": " + temp);
if(temp.charAt(i) == temp.charAt(i+1)) {
StringBuilder sb = new StringBuilder(temp);
repeats.add(temp);
sb.deleteCharAt(i);
temp = sb.toString();
}
}
"sollte ich nur eine Schleife und StringBuilder in einer Liste verwenden?" Fast immer, ja. – Sneftel
Besserer Ansatz ist der Aufbau von String mit Backtracking-Rekursion. Wenn du so etwas brauchst, schreibe ich dir vielleicht einen Ausschnitt. –
tue ich - aber wäre Rekursion besser als nur StringBuilder oder Teilstring-Methode verwenden? Ich habe eine wonky Teilstring-Schleife, die fast macht, was ich will, aber noch nicht ganz. – Yawn