我是新来的,如果有任何想法,我将非常感激......
我需要一个正则表达式来从文本中提取域和电子邮件。提取电子邮件没有问题,但域使任务变得更加棘手。
以下文为例:
[电子邮件受保护]、google.com、www.msn.com、[电子邮件受保护]、[电子邮件受保护]、somesite.com、bbc.co.uk
使用正则表达式
[a-zA-Z0-9._%+-]+@[a-zA-Z0-9.-]+\.[a-zA-Z]{2,4}
,我设法正确提取电子邮件([电子邮件受保护]、[电子邮件受保护]、[电子邮件受保护])。但是,我不知道如何修改此类 REGEX 以便它也能找到域。我在 StackOverflow 中做了一些研究,但我发现的多个 REGEX 不能满足我的需求 - 它们在电子邮件地址中查找域。
总结:我需要找到一个可以在文本中查找域和电子邮件的正则表达式。但是,域不能位于电子邮件地址内,域的形式可以是“co.uk”,也可以是二级域+根域。
任何想法表示赞赏。
谢谢!
您需要的是 (1) 查找电子邮件地址,以及 (2) 查找域名。这两个正则表达式分别满足每个要求:
[a-zA-Z0-9._%+-]+@[a-zA-Z0-9.-]+.[a-zA-Z]{2,4}
\b(?:https?:\/\/)?(?:www\.)?([a-zA-Z0-9-]+(?:\.[a-zA-Z]{2,})+)\b
。值得注意的是,最后一个正则表达式确实在电子邮件地址中找到了“域”。因此,您可以使用
|
运算符连接两个正则表达式,这样,如果它找到电子邮件地址,则不会同时找到其中的域:
[a-zA-Z0-9._%+-]+@[a-zA-Z0-9.-]+.[a-zA-Z]{2,4}|\b(?:https?:\/\/)?(?:www\.)?([a-zA-Z0-9-]+(?:\.[a-zA-Z]{2,})+)\b
在示例字符串上执行它(查看https://regex101.com/r/ECxH3p/1),上面的正则表达式发现:
希望这有帮助!愿代码与您同在...