【问题标题】:Match e-mail addresses not contained in HTML tag匹配 HTML 标记中未包含的电子邮件地址
【发布时间】:2011-02-13 15:04:46
【问题描述】:

我需要突出显示文本中的电子邮件地址,但如果包含在 HTML 标记、内容或属性中,则不需要突出显示它们。

例如,字符串example@example.com必须转换为<a href="mailto:example@example.com">example@example.com</a>

但不得处理字符串<a href="mailto:example@example.com">example@example.com</a> 中的电子邮件地址。

我尝试过类似这样的正则表达式:

(?<![":])[a-zA-Z0-9._%-+]+@[a-zA-Z0-9._%-]+.[a-zA-Z]{2,6}(?!")

但它不能正常工作。

【问题讨论】:

标签: python regex email


【解决方案1】:

我猜您的源文本是一个 HTML 文件,其中缺少一些包含的电子邮件地址的锚标记。如果这是真的,那么您将无法使用正则表达式来可靠地仅匹配未标记的电子邮件地址。例如,给定输入:

...
<P>You'll find a lot more written by <A 
href="mailto:SvartaIF@example.com"
title="some text including an@sign.org">

SvartaIF@example.com
</A>.
</P>
...

不可能将href 与地址进行词汇关联,也无法排除an@sign.org。您需要使用 HTML 解析器; BeautifulSoup 很受欢迎。

【讨论】:

    猜你喜欢
    • 2010-10-27
    • 2016-03-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-11-15
    • 2014-12-13
    相关资源
    最近更新 更多