У меня есть следующая строка:Регулярное выражение, чтобы получить строку из скобок?
«Девушка с татуировкой дракона (Лисбет)»
и мне нужно, чтобы получить только строку в скобках в конце ввода ,
До сих пор я пришел к этому:
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");
}
}
Но в результате я получаю: (LISBETH)
.
Как убежать от этих скобок?
Спасибо!
+1, но это не положительный внешний вид с значком равенства '(? <= \\()'? –
@PetarMinchev, конечно, вы правы, исправлены. – stema
Общая подсказка: * Не используйте lookarounds когда вам это не нужно. * Не только это усложняет выражение без необходимости, но и в некоторых случаях это просто неправильно. В этом случае он будет работать нормально, но, например, если вы будете искать найденные подстроки, например '(? <= ") [^"] * (? = ")' вы получите недопустимые результаты. В '' foo "bar" baz "' он найдет 'foo',' bar' и 'baz'. – Qtax