Java Regex - исключить пустые теги из xml - PullRequest
1 голос
/ 24 сентября 2010

допустим, у меня есть две строки xml:

String logToSearch = " 123456789012 "

String logToSearch2 = " <число xsi: type = \" soapenc: string \ "/> "

String logToSearch3 = " <номер /> ";

Мне нужен шаблон, который находит номер тега, если тег содержит значение, то есть совпадение должно быть найдено только в logToSearch.

Я не говорю, что ищу само число, а скорее, что метод matcher.find должен возвращать true только для первой строки.

Пока у меня есть это: Pattern pattern = Pattern.compile ("<(" + pattrenString + "). *?>", Pattern.CASE_INSENSITIVE); где patternString просто «число». Я пытался добавить "<(" + pattrenString + ") [^ />]. *?>, Но это не сработало, потому что в [^ />] каждый символ обрабатывается отдельно.

Спасибо

Ответы [ 2 ]

1 голос
/ 24 сентября 2010

Это абсолютно неправильный способ разбора XML.На самом деле, если вам нужно нечто большее, чем просто приведенный здесь базовый пример, очевидно, нет способа решить более сложные случаи с помощью регулярного выражения.

Используйте простой анализатор XML, например XOM .Теперь, используя xpath, запросите элементы и отфильтруйте их без данных.Я могу только представить, что этот вопрос является предвестником будущих головных болей, если вы прямо сейчас не измените свой подход.

0 голосов
/ 24 сентября 2010

Таким образом, поиск по "<number[^/>]*>" найдет открывающий тег.Если вы хотите убедиться, что он не пустой, попробуйте "<number[^/>]*>[^<]" или "<number[^/>]*>[0-9]"

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...