我需要在文本中突出显示电子邮件地址,但如果包含在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}(?!")
但它无法正常工作。
答案 0 :(得分: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很受欢迎。