Здраствуйте. Надо в JAVA регулярным выражением найти по шаблону слово и из этого слова извлечь "подслово". Пример:
String str = "<person userID=\"001\">";
Pattern pattern = Pattern.compile("userID=\"\\w*\"");
Matcher match = patt.matcher(str);
if(match.find())
System.out.printf("found: %s", match.group("(^userID=\")\\w*\""));
Находим строку userID="001". Можно ли выражением
match.group("(^userID=\")\\w*\"");
извлечь только 001 ? Если да, подскажите пожалуйста, как это можно сделать? Или если есть какой-нибудь другой способ.
Для начала определимся с методом group(). Он не может принимать в качестве аргумента регулярное выражение. Он предназначен для работы с захватываемыми группами, то есть на вход этому методу даётся либо номер либо имя группы.
Поэтому предлагаю завернуть нужное вам подслово в группу и затем извлечь его. Поскольку в этом примере одна группа, то и дополнительных аргументов методу передавать не нужно. :)
String str = "<person userID=\"001\">";
Pattern pattern = Pattern.compile("userID=\"(\\w*)\"");
Matcher match = pattern.matcher(str);
if (match.find()) {
System.out.println(match.group(1));
}
//в методе match.group(1) нужно было указать номер группы, но всё равно спасибо за развёрнутый ответ )
Сделайте так
public static void main(String[] args) {
String str = "<person userID=\"001\">";
Pattern pattern = Pattern.compile("userID=(\"\\w*\")");
Matcher match = pattern.matcher(str);
if (match.find()) System.out.printf("found: %s", match.group(1));
}
Продвижение своими сайтами как стратегия роста и независимости