【问题标题】:Regex to extract emails in WebHarvy正则表达式在 WebHarvy 中提取电子邮件
【发布时间】:2017-09-25 18:38:10
【问题描述】:

我正在尝试使用 WebHarvy (.NET) 处理正则表达式以从 WP 目录中提取电子邮件地址

电子邮件可以是多种格式,使用点和下划线,所以我尝试了以下表达方式

(\w+|\w+(\W|\.)\w+)@\w+.\w+
\w.+|\w+\S\w+@\w+\.\w+

虽然它们似乎在 Regexstorm 测试器中工作,但当我在 WebHarvy 中使用它们时,它们只提取 @ 之前的部分

请指教

【问题讨论】:

  • \b[A-Z0-9._%+-]+@[A-Z0-9.-]+\.[A-Z]{2,4}\b

标签: regex regex-lookarounds regex-greedy webharvy


【解决方案1】:

问题在于 WebHarvey 返回捕获组值。由于您使用捕获组 ((\w+|\w+(\W|\.)\w+)) 包装了用户部分,因此它只返回该部分。

您可以使用 non-capturing 组 ((?:...)) 来修复您的正则表达式

(\w+(?:\W+\w+)*@\w+\.\w+)

或者使用更通用的

([^\s<>'"]+@[^\s<>'"]+\.[^\s<>'"]+)

[^\s&lt;&gt;'"]+ 将匹配除空格之外的 1+ 个字符,&lt;&gt;'" 符号。 @\. 分别匹配 @.

【讨论】:

  • 感谢 Wiktor - 我使用了 (\S*@\w+\.\w+),但它以 value="example@example.com 返回电子邮件
  • 你应该定义上下文,像这样:value="([^\s"]+@\w+\.\w+)"。请注意\S = [^\s],除空格外的任何字符,您可以通过添加字符/范围来进一步限制它。您甚至可能会发现 ([^\s&lt;&gt;'"]+@[^\s&lt;&gt;'"]+\.[^\s&lt;&gt;'"]+) 是一个更好的选择。
  • 非常感谢,维克托
  • ([^\s&lt;&gt;'"]+@[^\s&lt;&gt;'"]+\.[^\s&lt;&gt;'"]+) 这工作得很好。回复晚了非常抱歉。谢谢
猜你喜欢
  • 2011-01-16
  • 2021-11-24
  • 1970-01-01
  • 2017-07-13
  • 2018-12-04
  • 2021-01-17
  • 1970-01-01
  • 2018-01-19
  • 1970-01-01
相关资源
最近更新 更多