У меня проблема с поиском определенных именованных тегов xml в текстовом блоке, который может быть или не быть пустым.Я не уверен, что проблема все-таки решается с помощью регулярных выражений.
Например, у меня есть следующий текстовый блок:
...<item name="xxx">yyyy</item>....
Чтобы отфильтровать тег 'item' с его атрибутами Ia используйте следующее регулярное выражение:
<item(.*?)>(.*?)</item>|<item(.*?)./>
Это регулярное выражение также работает с пустыми тегами, как в следующем примере текста:
...<item name="zzz" />....
Моя проблема состоит в том, что мой текст содержит несколько тегов 'item',Это работает до тех пор, пока я не смешиваю пустые и непустые теги, как в следующем примере текстового блока:
...<item name="zzz" />....
...<item name="xxx">yyyy</item>....
Регулярное выражение, которое я использую, не работало с этой ситуацией, поскольку оно находит первый результат:
<item name="zzz" />.......<item name="xxx">yyyy</item>
Мой вопрос: эта проблема разрешима с помощью регулярных выражений?Первым делом я использовал такую комбинацию «И НЕ», как
(<item(.*?))(?!/>)>(.*?)</item>
Но я не смог решить эту проблему.
Мой код Java для применения регулярного выражения к заданному текстовому блоку выглядит следующим образом:
Pattern pattern = Pattern.compile("<item(.*?)>(.*?)</item>|<item(.*?)./>", Pattern.DOTALL);
Matcher matcher = pattern.matcher(textblock);
while (matcher.find()) {
String attributes = matcher.group(1);
....
}