String[] words = {"a","ab","ac","abc","aac","aa"};
for(String str:words) {
if(str.matches("[abc]+")) {
System.out.println(str);
}
}
Dieser Code ausdruckenMake Java regex '[abc] +' Spiel einmal pro Brief
a, ab, ac, abc, aac, aa
Das ist fast, was Ich will, außer ich möchte nicht, dass ein Buchstabe zweimal abgeglichen wird. Ich möchte die Regex [abc]+
so ändern, dass die Übereinstimmung nur einmal auftritt. Die aac
und aa
sollten nicht gedruckt werden, da aa
zweimal übereinstimmt. Kann ich das tun?
Haben Sie nur 3 einzelne Zeichen im realen Leben? Wenn ja, und das obige Beispiel ein sehr vereinfachtes Beispiel dafür ist, was wirklich benötigt wird, dann ist Regex nicht das beste Werkzeug für diese Aufgabe. –
Wenn es keine künstliche Anforderung gibt, einen regulären Ausdruck zu verwenden, würde ich sagen, dass es viel besser ist, dies prozedural auszuführen, indem eine Methode erstellt wird, die die Zeichen in der Zeichenfolge iteriert und in ein "Set" setzt ein Duplikat (wenn [Set.add] (https: //docs.oracle.com/javase/7/docs/api/java/util/Set.html#add \ (E \)) false zurückgibt). – dnault
Ich denke, Ihr Problem ist ähnlich wie: http://stackoverflow.com/questions/12870489/regex-to-match-a-word-with-unique-non-repeating-characters – xBATx