Ich habe die folgende Zeichenfolge:Ein Regex, um Strings aus den Klammern zu bekommen?
„Das Mädchen mit dem Drachen Tattoo (LISBETH)“
und ich brauche nur die Zeichenfolge in den Klammern am Ende der Eingabe zu erhalten .
weit So kam ich zu diesem:
public static void main(String[] args) {
Pattern pattern =
Pattern.compile("\\({1}([a-zA-Z0-9]*)\\){1}");
Matcher matcher = pattern.matcher("The girl with the dragon tattoo (LISBETH)");
boolean found = false;
while (matcher.find()) {
System.out.println("I found the text " + matcher.group()
+ " starting at " + "index " + matcher.start()
+ " and ending at index " +
matcher.end());
found = true;
}
if (!found) {
System.out.println("No match found");
}
}
Aber als Ergebnis erhalte ich: (LISBETH)
.
Wie komme ich von diesen Klammern weg?
Danke!
+1, aber ist nicht der positive Blick dahinter mit einem Gleichheitszeichen '(? <= \\()'? –
@PetarMinchev natürlich hast du Recht, korrigiert. – stema
Allgemeiner Tipp von mir: * Verwende keine lookarounds wenn es nicht nötig ist. * Es verkompliziert den Ausdruck nicht nur unnötigerweise, sondern es ist auch in manchen Fällen einfach falsch.In diesem Fall wird es gut funktionieren, aber zum Beispiel, wenn Sie nach notierten Substrings suchen, zB '(? <= ") [^"] * (? = ")" Sie würden ungültige Ergebnisse erhalten. In '" foo "bar" baz "' würde es 'foo',' bar 'und' baz' finden. – Qtax