我只想从给定的html中删除一组html标记(b,i,p,end of tag)。
Pattern p = Pattern.compile("<[^bip/](.*?)>");但是,这也删除了.*的img标记。我应该改变什么来阻止img的去除?
编辑:我在安卓应用上做这个。我知道regex是最糟糕的方式,但是内置的可扩展类不能像预期的那样工作,而且我不能只为html解析导入一个库。我的目的是检测其他标签是否存在。而且,html很小(最多10行),性能不应该是个问题。
发布于 2011-04-29 05:47:22
尝试使用xml (或html)是个坏主意:您肯定希望使用解析器。
在你的例子中,你想要匹配:
<\s*/?\s*[bip]\s*>删除简单的字母标签
(和相同的结束标记),并考虑到一些空格是有效的;您还需要运行您的regex作为多行。它可能有用,但它是危险的,你可能会有意想不到的副作用
编辑:我理解您只是想删除标签,而不是标签中的实际内容。
EDIT2:当前模式匹配3个标记,而不是它们的内容。在替换regexp (以空替换)中,它将删除这些格式标记,而不是嵌入式内容。
发布于 2011-04-29 05:48:25
这在stackoverflow上已经说了一百万次了。
不使用regexes处理HTML、XHTML或XML。它们不是普通语言,它们是上下文无关的语言,不能用正则表达式正确地处理。
发布于 2011-04-29 05:44:05
我不确定我是否理解你的判断力,似乎和你说的很不一样。使用如下所示:
<([bip])>.*?</\1>,如果可能的话,不要使用上述或任何其他正则表达式。还有其他更好的方法来做到这一点。在这里或在google.上搜索
https://stackoverflow.com/questions/5828285
复制相似问题