помочь с регулярным выражением - PullRequest
2 голосов
/ 31 мая 2011

Из строки [foo](bar) Я хочу извлечь foo и bar часть:

Pattern p = Pattern.compile("\\[(.*)\\]\\((.*)\\)");
String input = "[foo](bar)";
assert p.matcher(input).matches();
String[] a = ???   // should be initialized to {"foo", "bar"}

Что мне написать в четвертой строке, чтобы получить foo и bar из ввода?

Ответы [ 2 ]

4 голосов
/ 31 мая 2011

Это должно приблизить вас к тому месту, где вы хотите быть:

Pattern p = Pattern.compile("\\[(.*)\\]\\((.*)\\)");
String input = "[foo](bar)";
Matcher m = p.matcher(input);
if (m.find()){
    String[] a = { m.group(1), m.group(2) }; 
}

По сути, вы создадите Matcher.Затем используйте find(), чтобы найти совпадение.Затем вы будете использовать группы, чтобы найти совпадения внутри скобок.

0 голосов
/ 31 мая 2011

Я бы сказал, что регулярное выражение, подобное приведенному ниже, легче обрабатывать и расширять:

[\[\(](.*?)[\]\)]
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...