Как регулярное выражение express для получения скобок часть строки в Java - PullRequest
0 голосов
/ 24 марта 2020

Я пытаюсь использовать регулярные выражения получить круглые скобки f char

foo (f123&) ff ccc

это имеет значение теста express:

  1. (?i)(?<=\\()\w(?=\\)). получить только скобки f char, получить исключение не найдено
  2. \\(([a-l])\\). так же, как и выше. Исключение не найдено

тестовый код:

        Pattern pattern = Pattern.compile("\\(([a-l])\\)");
        Matcher matcher = pattern.matcher("foo (f123&) ff ccc");
        matcher.find();
        System.out.println(matcher.group(1));

Я искал, не нашел подходящий ответ.

как получить скобки, часть значения.

1 Ответ

1 голос
/ 24 марта 2020

Ваш текущий шаблон регулярного выражения \(([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));
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...