【发布时间】:2012-10-16 17:47:31
【问题描述】:
我需要解析以下格式的电子邮件:
嗨,约翰·多伊,
这里还有一些文字。
还有更多、更多、更多的文字。
您的用户 ID 是:1234
您的激活 ID 是:5678910
更多文字出现在这里。
我正在寻找的正则表达式必须返回:
- 称呼中的名字(这里:“John Doe”)
- 用户 ID(此处:1234)
- 激活 ID(此处:5678910)
我尝试了以下正则表达式,但它返回了整个电子邮件;我相信我犯的错误是电子邮件正文的其余部分中还有其他逗号,因此冒号与所有逗号匹配。如果用户输入了一个奇怪的包含逗号的用户名,那么即使是称呼中的名字也可以包含逗号。
preg_match_all("/Hi (.*),/", $out, $match);
【问题讨论】:
-
离开我的脑海 - 而不是
(.*)尝试(.+?)。你现在的那个是“贪婪的”。 -
提示:使用三个正则表达式,一个用于
"Hi <name>,",一个用于"Your user ID is: (\d+)",一个用于"Your activation ID is: (\d+)"。