首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Regex只从html中移除特定的标记。

问Regex只从html中移除特定的标记。
EN

Stack Overflow用户
提问于 2011-04-29 05:35:43
回答 5查看 3.5K关注 0票数 1

我只想从给定的html中删除一组html标记(b,i,p,end of tag)。

代码语言:javascript
复制
Pattern p = Pattern.compile("<[^bip/](.*?)>");

但是,这也删除了.*的img标记。我应该改变什么来阻止img的去除?

编辑:我在安卓应用上做这个。我知道regex是最糟糕的方式,但是内置的可扩展类不能像预期的那样工作,而且我不能只为html解析导入一个库。我的目的是检测其他标签是否存在。而且,html很小(最多10行),性能不应该是个问题。

EN

回答 5

Stack Overflow用户

回答已采纳

发布于 2011-04-29 05:47:22

尝试使用xml (或html)是个坏主意:您肯定希望使用解析器。

在你的例子中,你想要匹配:

代码语言:javascript
复制
<\s*/?\s*[bip]\s*>

删除简单的字母标签

(和相同的结束标记),并考虑到一些空格是有效的;您还需要运行您的regex作为多行。它可能有用,但它是危险的,你可能会有意想不到的副作用

编辑:我理解您只是想删除标签,而不是标签中的实际内容。

EDIT2:当前模式匹配3个标记,而不是它们的内容。在替换regexp (以空替换)中,它将删除这些格式标记,而不是嵌入式内容。

票数 2
EN

Stack Overflow用户

发布于 2011-04-29 05:48:25

这在stackoverflow上已经说了一百万次了。

不使用regexes处理HTML、XHTML或XML。它们不是普通语言,它们是上下文无关的语言,不能用正则表达式正确地处理。

票数 3
EN

Stack Overflow用户

发布于 2011-04-29 05:44:05

我不确定我是否理解你的判断力,似乎和你说的很不一样。使用如下所示:

代码语言:javascript
复制
<([bip])>.*?</\1>

,如果可能的话,不要使用上述或任何其他正则表达式。还有其他更好的方法来做到这一点。在这里或在google.上搜索

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/5828285

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档