Я пытаюсь написать регулярное выражение, чтобы удалить все, кроме нескольких закрывающих тегов xml.Java regex для сохранения определенных закрывающих тегов
код кажется достаточно простым:
String stringToParse = "<body><xml>some stuff</xml></body>";
Pattern pattern = Pattern.compile("</[^(a|em|li)]*?>");
Matcher matcher = pattern.matcher(stringToParse);
stringToParse = matcher.replaceAll("");
Однако, когда это работает, он пропускает "XML" закрывающий тег. Кажется, что пропускает любой тег, где в скомпилированной группе есть соответствующий символ (a | em | li), то есть если я удалю «l» из «li», он работает.
Я бы ожидать, что это возвращает следующую строку: «<body><xml>some stuff
» (я делаю дополнительный синтаксический анализ, чтобы удалить теги открытия, но держать его просто для примера).
Не могли бы вы конкретно указать, что вы хотите получить окончательное значение stringToParse, и что вы получаете вместо этого? –
Это похоже на некоторые важные для безопасности задачи. Я бы настоятельно рекомендовал забыть идею регулярного выражения и вместо этого использовать ** настоящий ** парсер. Даже если вы назвали переменную «stringToParse», использование регулярного выражения ** не ** разбор. – BalusC