Я использую java Pattern & Matcher для извлечения слов между двумя тегами.
Мой код похож:
final Pattern pattern = Pattern.compile("<([A-Za-z][A-Za-z0-9]*)\\b[^>]*>(.*?)</\\1>");
List<String> topicArray = new ArrayList<String>();
final Matcher matcher = pattern.matcher("<City count='1' relevance='0.304' normalized='Shanghai,China'>Shanghai</City>");
while (matcher.find()) {
topicArray.add(matcher.group(1));
}
Система дает мне City вместо выхода из Шанхая. Что с этим не так?
благодаря
Вы можете попробовать следующее:
private static final Pattern REGEX_PATTERN =
Pattern.compile("<[^>]*>([^<>]*)<[^>]*>");
public static void main(String[] args) {
String input = "<City count='1' relevance='0.304' normalized='Shanghai,China'>Shanghai</City>";
System.out.println(
REGEX_PATTERN.matcher(input).replaceAll("$1")
); // prints "Shanghai"
}