Используйте шаблон Java для извлечения слова между тегом HTML с атрибутами

0

Я использую 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 вместо выхода из Шанхая. Что с этим не так?

благодаря

  • 4
    Похожие страницы : stackoverflow.com/q/1732348/1065197
  • 0
    Используйте HTML-библиотеку разбора, для этого они и предназначены.
Теги:

1 ответ

0
Лучший ответ

Вы можете попробовать следующее:

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"
}
  • 0
    Да, это сработало. Есть ли способ проверить теги внутри тега? Например, <Количество городов ....> <Name id = "cccc"> Шанхай </ Name> </ City>
  • 0
    Я обновил свой ответ. Попробуйте еще раз.
Показать ещё 2 комментария

Ещё вопросы

Сообщество Overcoder
Наверх
Меню