You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

求可替换HTML标签提取文本的正则表达式解决方案

解决HTML标签提取文本的正则问题

嘿,我来帮你搞定这个问题!你之前的正则表达式之所以没达到效果,是因为用错了写法——字符类(方括号[])只会匹配单个字符,而不是完整的HTML标签块。

为什么你的正则失效了?

你用的[<span*\b>]是一个字符类,它会逐个匹配方括号里的字符:&、l、t、;、s、p、a、n、*、\b(这里是退格字符,不是你想的单词边界)、>。所以它只是把这些单个字符从字符串里删掉,剩下的字符比如t、y、l、e不在字符类里,就保留了下来,这才出现了tyle="fot-ize:11t;"这种奇怪的输出。

正确的正则表达式

根据你的字符串是转义后的HTML(用&lt;代替<,&gt;代替>),我们需要匹配完整的转义标签块:

String x = '&lt;span style="font-size:11pt;"&gt;&lt;span style="line-height:107%;"&gt;&lt;span style="font-family:Calibri, sans-serif;"&gt;&lt;strong&gt;&lt;font color="#000000"&gt;Some normal text here...&lt;/font&gt;&lt;/strong&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;';
String y = x.replaceAll("&lt;\\/?[^&]+?&gt;", "");
System.debug(y);

正则解释:

  • &lt;:匹配转义的左尖括号
  • \\/?:匹配可选的/(用于匹配结束标签,比如&lt;/font&gt;)
  • [^&]+?:非贪婪匹配任意非&的字符,确保只匹配到当前标签的&gt;就停止,不会跨标签匹配
  • &gt;:匹配转义的右尖括号

执行这段代码后,输出就是你想要的:Some normal text here...

如果是原始HTML(未转义)

如果你的字符串是直接包含<和>的原始HTML,把正则改成下面这样即可:

String y = x.replaceAll("<\\/?[^>]+>", "");

内容的提问来源于stack exchange,提问作者Sam

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.15 03:30:14