【发布时间】:2017-02-20 07:01:52
【问题描述】:
在我的情况下,内容将包含以下任何格式的电子邮件地址。
1. From : dr-dscsda-ds-info@asdf.com
2. From:sadaedf@sdc.sdfds
3. rom: sdcasdc <information@dsf.net>
4. From: "adads" <adsasd@adsc.cd>
5. From: <customercare@ddsaf.com>
我需要找到上述模式之一并从中提取电子邮件地址
我试过的正则表达式
From\s*:\s*((["|']?)[\w|\s]+\2)?\s*(\<?)([\w]([\w\-\.\+\'\/]*)@([\w\-\.]*)(\.[a-zA-Z]{2,22}(\.[a-zA-Z]{2}){0,2}))(\>?)
我的正则表达式中的所有格式都匹配。但除了 1 和 2,我将使用 group(4) 从正则表达式中提取电子邮件地址。
但如果是 1 和 2,它不会给我完整的电子邮件地址。
请帮助更改正则表达式,使其符合我的所有情况。
【问题讨论】:
-
你有这么多的捕获组……更频繁地使用
(?:……)。仅在需要时使用(…),例如提取电子邮件本身。否则会变得相当混乱。 -
@Xufox “似乎可以工作”,直到您添加更多测试用例,是的。这是一个常见的常见问题解答,标准答案是“不要那样做;或者至少对问题有足够的了解,以了解您需要做出哪些妥协”。不使用正则表达式通常是明智的选择。
标签: regex email-address