ich diesen Code haben:Reluctant quantifier wirkt gierig
String result = text;
String regex = "((\\(|\\[)(.+)(\\)|\\])){1}?";
Pattern pattern = Pattern.compile(regex);
Matcher matcher = pattern.matcher(result);
System.out.println("start");
System.out.println(result);
while (matcher.find()) {
System.out.print("Start index: " + matcher.start());
System.out.print(" End index: " + matcher.end() + " ");
System.out.println(matcher.group());
}
System.out.println("finish");
Und ich habe eine Zeichenfolge, die ich passen wollen:
Some text sentence or sentences [something 234] (some things)
Und die Ausgabe erhalte ich bei Ausführung:
start
some text sentence or sentences [something 234] (some things)
Start index: 32 End index: 61 [something 234] (some things)
finish
Nun möchte ich eigentlich, dass die gefundenen Fälle in Klammern getrennt finden, so zu finden: [etwas 234] in einem Spiel (einige Dinge) als das zweite Spiel
Kann mir bitte jemand helfen, die Regex entsprechend zu bauen? Ich bin mir nicht sicher, wie ich den widerwilligen Quantifizierer für den ganzen regulären Ausdruck setzen soll, also umgebe ich die ganzen Klammerelemente in anderen Klammern. Aber ich verstehe nicht, warum dieser zögerliche Quantor hier gierig agiert und was muss ich tun, um das zu ändern?
wollen Sie den Inhalt in '[]' und '()'? – rock321987
'. +' Ist nicht gierig. ". +?" wäre. – Pshemo
Auch '{1}?' Scheint überflüssig. – Pshemo