Мне нужно извлечь подстроки из строки:Нужна помощь в выяснить правильное регулярное выражение
Учитывая строку: "< If((h == v)): { [ < j = (i - f) ;>, < k = (g + t) ;> ] }>"
мне нужны две подстроки: "j = (i - f)"
и "k = (g + t)"
.
Для этого я попробовал регулярное выражение пользовательского шаблона. Вот мой код:
Pattern pattern = Pattern.compile("[<*;>]");
Matcher matcher = pattern.matcher(out.get(i).toString());
while (matcher.find())
{
B2.add(matcher.group());
}
out.get (i) .toString() - это моя строка ввода. B2 является ArrayList, который будет содержать две извлеченные подстроки.
Но, после выполнения вышеуказанного кода, выход, который я получаю: [<, <, ;, >, <, ;, >, >]
.
My pattern не работает! Ваша помощь очень ценится. Спасибо заранее!
Попробуйте этот сайт http://www.regexplanet.com/ – Elmer
Одна проблема заключается в том, что '[...]' не означает, что вы думаете, что он делает. Это обозначение для * символьного класса *, такого, что (например) '[abc]' означает «a», «b» или «c'». – ruakh