1

例如:mailto:info@info.com?subjectsomething 或 mailto:info@info.com

我只想获取没有主题的电子邮件地址(如果有)

这个表达式是不够的,我不能让它工作:

mailto:(.*)

谢谢

4

3 回答 3

2

试试这个正则表达式:

mailto:([^\?]*)
于 2012-07-27T16:51:13.693 回答
1

您需要将匹配的字符保存在捕获组中:

mailto:([^?]+)

现在您的地址在 $1 中(或其他变量;取决于语言)。

如果可能在电子邮件地址之后出现其他内容,则必须指定分隔符。例如,如果是空格:

mailto:([^?\S]+)[\s?]

你也可以使用非贪婪的 re:

mailto:(.+?)[\s?]

这意味着“一遇到\s(空间)或?

于 2012-07-27T16:56:57.947 回答
0

这将在单词边界内查找匹配的字符串。您需要使用您选择的语言从第一个带括号的子模式中获取电子邮件的值(通常对它的引用是 $1)。第二个子模式将捕获主题(以 ? 开头)。

\bmailto:(.*)(\?.*)?\b
于 2012-07-27T16:56:17.563 回答