0

尝试使用 Eclipse 正则表达式搜索在特定用户不是 user.a@domain.com 或 user.b@domain.com 的文件中查找电子邮件地址(即anything@domain.com)。

使用下面的字符串需要找到粗体项目,而其他地址需要跳过: bob@domain.com ,user.b@domain.com, andy@domain.com ,user.a@domain.com

我已经做到了以下几点,但它并没有像我认为的那样工作。\b(?!user.b)\w*@domain.com\b

4

3 回答 3

3
^(?!user\.b@domain.com|user\.a@domain.com).*[\w]+[\w]?[\w./]+@[\w_]+\.[a-zA-Z]+\.?[a-zA-Z]{2,4}$

这将找到所有电子邮件地址,无论域如何,只需继续附加到没有 user\.b@domain.com|user\.a@domain.com|更多电子邮件地址的列表并转义"."

于 2012-09-28T09:49:22.263 回答
0

我不确定您的确切要求,但这将匹配非 user.[字母和数字]@domain.com 形式的任何内容(并且不包含.在左侧)。

(?<!user\.)\w+@domain\.com\b

您的原件有几个问题:

  • . 是一个单词边界,所以你会从“user.a@domain.com”中匹配“a@domain.com”。
  • .正则表达式中是一个元字符,因此您必须对其进行转义。
  • 您需要使用后视断言而不是简单的(?! ... )构造。

更新:这是 Perl 正则表达式文档。一般来说,Eclipse 遵循这一点。

进一步更新:为了澄清,我的代码与任何包含@左侧点的电子邮件地址都不匹配。如果您需要用点匹配其他地址,由于后视的性质,它实际上开始变得相当复杂。这个修改后的版本将匹配除用户之外的任何地址。后跟 1 到 5 个字符。

[\w\.]+(?<!user\.\w{1,5})@domain\.com\b
于 2012-09-28T09:42:18.370 回答
-1

实际上,不鼓励使用正则表达式检查电子邮件地址,您能做的最好的事情就是发送确认电子邮件。我同意,这并不总是可能的,但这是您可以拥有的最可靠的方式。

请参阅http://davidcelis.com/blog/2012/09/06/stop-validating-email-addresses-with-regex/和随附的 reddit 讨论http://de.reddit.com/r/programming/中的详细信息评论/zgumq/stop_validating_email_addresses_with_regex/

于 2012-09-28T10:46:29.987 回答