我正在使用Aweber的自动电子邮件解析功能来处理Unbounce表单提交,看起来他们的默认正则表达式有点不可靠:
它们将电子邮件与\nemail:\s+(.+?)\n匹配,将名称与\nname:\s+(.+?)\n匹配
问题是,因为我没有询问用户的姓名,所以他们的正则表达式会自动获取下一行,即===== FORM DATA =====,因此它会向用户发送电子邮件"Hi ===== FORM DATA =====!“
下面是一个取消退回邮件的示例:
page_name:
page_id: 2b78ddde-e7bb-11e1-9fde-12313e00ec56
page_url: http://www1.sample.com
variant: C
email: sample@gmail.com
name:
===== FORM DATA =====
email: ["sample@gmail.com"]
ip_address: 88.253.**.**
--
The Unbounce Team
Toll Free 1-888-515-9161
support@unbounce.com
http://unbounce.com如果不存在值,我如何修改它们的正则表达式,使其在行尾停止?
发布于 2012-09-27 01:05:11
将名称regex更改为:
\nname:[ \t]+(.+?)\n这里的变化是用[ \t]替换\s,因为\s将匹配换行符。
如果没有提供名称,这将导致匹配失败,如果您希望名称仍然匹配,但将空字符串放入组中,您可以使用以下方法:
\nname:[ \t]*(.*?)\n正如Evandro Silva所指出的,您可以通过将.+?或.*?分别替换为[^\n]+或[^\n]*来提高此正则表达式的效率。
发布于 2012-09-27 01:07:38
尝试正则表达式模式[\n\r]name:[^\S\n\r]*([^\n\r]*)
https://stackoverflow.com/questions/12606850
复制相似问题