Я хочу найти XML-теги типа х в тексте,Неожиданное совпадение с Java регулярное выражение
- пусты (содержит только пробелы)
- могут или не могут иметь атрибуты
Рекомендуем также что-то вроде этого
<x> </x>
<x a="v"> </x>
Я использую следующее регулярное выражение в сочетании с функцией поиска Matcher.
<x.*?> +</x>
Я получаю спички, которых я не ожидаю. См. Следующий контрольный пример:
@Test
public void sample() throws Exception
{
String text = "Lorem <x>ipsum <x>dolor sit amet</x> </x>";
String regex = "<x.*?> +</x>";
Matcher matcher = Pattern.compile(regex).matcher(text);
assertFalse(matcher.find());
}
Тест не проходит. Вместо этого это верно.
assertTrue(matcher.find());
assertEquals("<x>ipsum <x>dolor sit amet</x> </x>", matcher.group());
Означает ли функция поиска не поддерживать неживого оператора или что здесь не так?
PS Я знаю, что существует множество различных способов обработки XML-данных. Но здесь дело не в этом.
[Одна хорошая причина не рисковать по этой дороге] (http://stackoverflow.com/questions/1732348/regex-match-open-tags-except-xhtml-self-contained-tags) – Reimeus