Ваш текущий шаблон регулярного выражения \(([a-l])\)
, который не будет совпадать, потому что во входной строке есть другое содержимое после одной буквы и перед закрывающей скобкой. Я мог бы использовать String#replaceAll
здесь для опции в одну строку:
String input = "foo (f123&) ff ccc";
String output = input.replaceAll("^.*\\(([a-l])[^)]*\\).*$", "$1");
System.out.println("letter is: " + output);
Это печатает:
letter is: f
Если вы хотите итеративное решение регулярных выражений:
String input = "foo (f123&) ff ccc";
String pattern = "\\(([a-l])[^)]*\\)";
Pattern r = Pattern.compile(pattern);
Matcher m = r.matcher(input);
while (m.find()) {
System.out.println("MATCH: " + m.group(1));
}