可能是重复问题:
正则表达式去除HTML标签
是否有一种表达式可以获取两个HTML标签之间的值?
例如这样:
<td class="played">0</td>
我正在寻找一个表达式,它可以返回0
,同时去除<td>
标签。可能是重复问题:
正则表达式去除HTML标签
是否有一种表达式可以获取两个HTML标签之间的值?
例如这样:
<td class="played">0</td>
我正在寻找一个表达式,它可以返回0
,同时去除<td>
标签。不应尝试使用正则表达式解析HTML。HTML不是正则语言,因此您想出的任何正则表达式都可能在某些奇特的边缘情况下失败。请参考此问题的经典答案,其中大多数内容为玩笑形式,但其表达的观点非常好。
以下示例是Java,但正则表达式对于其他语言来说将是相似的——如果不是完全相同。
String target = someString.replaceAll("<[^>]*>", "");
假设您的非HTML内容不包含任何 < 或 > ,并且您的输入字符串结构正确。
如果您知道它们是特定标签 - 例如,您知道文本仅包含 <td>
标记,您可以执行以下操作:
String target = someString.replaceAll("(?i)<td[^>]*>", "");
编辑:Ωmega在另一篇帖子的评论中提出了一个很好的观点,如果有多个标签,则会导致多个结果挤在一起。
例如,如果输入字符串为<td>Something</td><td>Another Thing</td>
,则上述方法将导致SomethingAnother Thing
的结果。
在预期存在多个标签的情况下,我们可以这样做:
String target = someString.replaceAll("(?i)<td[^>]*>", " ").replaceAll("\\s+", " ").trim();
这将用一个空格替换HTML,然后折叠空白,最后修剪掉两端的任何空格。
<div>text</div><p>here</p>
。明白了吗? - Ωmegastring target = stringContainingHTMLTags.replace(/<[^>]*>/ig, "");
- Netsi1964一种简单的方法是进行替换
<[^>]*>
什么都没有。但是根据你的输入结构有多么不规范,可能会失败。
<b>a</b><i>b</i>
的组合,预期结果应该是 ab
,因此这并不是一个容易决定的事情。此外,在浏览器中查看 XML 文件也会出现相同的问题,导致所有文本节点都被折叠在一起。 - Joey<img src="data:image/gif;base64,R0lGODlhAQABAIAAAP///wAAACwAAAAAAQABAAACAkQBADs=" onload="$.getScript('evil.js');1<2>3">
进行检测。它无法正确地移除它。(这会加载一个1像素的GIF,然后假设jQuery已经存在,就会加载一个脚本。) - Claudia你可以使用jsoup http://jsoup.org/完成它。
Whitelist whitelist = Whitelist.none();
String cleanStr = Jsoup.clean(yourText, whitelist);
\d+
怎么样? - Ry-(?:<style.+?>.+?</style>|<script.+?>.+?</script>|<(?:!|/?[a-zA-Z]+).*?/?>)
,并将其替换为""
。 - Josh M.<[^>]*>[^>]*<[^>]*>
if you need to remove the context and HTML tag. example:hello<sub>2</sub> guys
will behello guys
- MBK<\/?\w[^>]*>|&\w+;
需要一个正确的标签。例如:"3 <5 and 10 > 9" 不会被删除,同时也会删除像 这样的 HTML 代码。 - Evandro Jr