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

如何用正则表达式提取HTML邮件中特定条件注释间的文本

提取<![if !supportLists]>与<![endif]>之间的文本

没问题,我帮你搞定这个邮件HTML的文本提取需求!这类微软Outlook生成的条件注释标签确实有点烦人,下面给你两种场景的解决方案:


1. 先提取标签之间的所有内容(包含HTML)

如果只是需要把两个条件注释之间的所有内容(包括里面的<span>这类标签)抓出来,用这个正则就够了:

<!\[if !supportLists\]>(.*?)<!\[endif\]>

关键点解释:

  • <!\[if !supportLists\]>:转义了方括号[,确保正则能精准匹配开头的条件注释
  • (.*?):非贪婪匹配模式,避免一次性匹配到多个<!\[endif\]>标签(如果邮件里有多个这类块的话)
  • <!\[endif\]>:匹配结尾的注释标签

2. 提取纯文本(去掉中间的HTML标签)

看你的示例输出是想要纯文本内容,那需要两步操作:先抓出注释之间的HTML内容,再剥离所有标签、处理空格实体。下面给你Python和JavaScript的实战代码:

Python 示例

import re

# 你的输入文本
input_html = "<![if !supportLists]><span style='mso-list:Ignore'>Index<span style='font:7.0pt \"Times New Roman\"'> Value &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span></span><![endif]>"

# 第一步:匹配条件注释之间的内容
if_pattern = r'<!\[if !supportLists\]>(.*?)<!\[endif\]>'
match_result = re.search(if_pattern, input_html, re.DOTALL)

if match_result:
    # 获取中间的HTML内容
    inner_html = match_result.group(1)
    # 第二步:去掉所有HTML标签
    pure_text = re.sub(r'<.*?>', '', inner_html)
    # 把&nbsp;替换成普通空格,再去除首尾多余空白
    clean_text = pure_text.replace('&nbsp;', ' ').strip()
    print(clean_text)  # 输出: Index Value

JavaScript 示例

const inputHtml = "<![if !supportLists]><span style='mso-list:Ignore'>Index<span style='font:7.0pt \"Times New Roman\"'> Value &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span></span><![endif]>";

// 匹配条件注释内容,/s修饰符让.匹配换行符
const ifRegex = /<!\[if !supportLists\]>(.*?)<!\[endif\]>/s;
const match = inputHtml.match(ifRegex);

if (match) {
    let innerHtml = match[1];
    // 移除所有HTML标签
    innerHtml = innerHtml.replace(/<.*?>/g, '');
    // 处理空格实体并清理首尾空白
    const cleanText = innerHtml.replace(/&nbsp;/g, ' ').trim();
    console.log(cleanText); // 输出: Index Value
}

注意事项

  • 用re.DOTALL(Python)或/s(JavaScript)是为了兼容跨多行的注释内容,毕竟邮件HTML偶尔会换行排版
  • 如果你的邮件里有更复杂的嵌套标签(比如注释里还有其他条件注释),可能需要调整正则,但这个方案覆盖了90%以上的常见场景

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.20 11:31:33