Опитах да използвам
title.substring(title.lastIndexOf("(") + 1, title.indexOf(")"));
Искам само да извличам година като 1899.
Той работи добре за низ като "hadoop (1899)", но хвърля грешки за низ "hadoop (прежда) (1980)"
Отговори:
0 за отговор № 1Здравейте, чек това пример. Това е regex за извличане на числа, заобиколени от скоби.
Тук можете да използвате използвания код:
import java.util.regex.Matcher;
import java.util.regex.Pattern;
final String regex = "(?<=\()\d+(?=\))";
final String string = ""hadoop (1899)" "hadoop(yarn)(1980)"";
final Pattern pattern = Pattern.compile(regex);
final Matcher matcher = pattern.matcher(string);
while (matcher.find()) {
System.out.println("Full match: " + matcher.group(0));
for (int i = 1; i <= matcher.groupCount(); i++) {
System.out.println("Group " + i + ": " + matcher.group(i));
}
}
0 за отговор № 2
Просто заменете всички, с изключение на цифрите в скоби, с regex
String foo = "hadoop (1899)"; // or "hadoop(yarn)(1980)"
System.out.println(foo.replaceAll(".*\((\d+)\).*", "$1"));