【发布时间】:2013-03-08 13:02:42
【问题描述】:
我正在尝试从 Java 字符串中删除任何 XML 标记。在我看来,如果它遵循以下一种或两种形式,那么它就是一个 XML 标记:
-
<*>*<*/*>,如<fizz>buzz< /fizz>;或 -
<*/*>,如< fizz />
我的正则表达式很简单:
String tagful = "Hello <fizz>buzz</fizz>Regexes!";
String tagless = tagful.replaceAll("<*>*<*/*>", "");
tagless = tagless.replaceAll("<*/*>", "");
System.err.println("TAGLESS:\n\t" + tagless);
当我运行它时,我得到Hello <fizzbuzz</fizzRegexes! 作为输出,而(如果我的 XML 剥离代码是正确的),我应该得到Hello Regexes!。我会误入歧途吗?
请注意:我不想使用任何现有的库;我在这里寻找一个纯 Java 正则表达式解决方案。提前致谢!
【问题讨论】:
-
您无法使用正则表达式解析 XML。 为什么您反对为此使用适当的解析器?
-
"*" 不是 Java 正则表达式(或大多数正则表达式)中的通配符。它是一个“零个或多个”量词,它被应用于它之前的任何东西。单字符通配符正则表达式是“。” (点或句号)。
-
[剥离标签(只去除标签)]和[去除标签及其里面的所有内容]是不同的。我不知道你想用这个实现什么。