如何从ruby中的字符串中提取子字符串?

时间:2014-10-06 20:42:55

标签: ruby regex

我有一个重复的string="I will email you at xxx@gmail.com",我想提取实际的电子邮件地址。

如何将电子邮件拉出来?

注意:理想情况下,我还希望处理格式可能为"I will email you at my email xxx@gmail.com"的用户错误。在这种情况下,用户输入"我的电子邮件xxx@gmail.com"我只想要电子邮件地址。

2 个答案:

答案 0 :(得分:1)

相对宽松的正则表达式将适用于您的示例:

"I will email you at xxx@gmail.com".match(/\b\S+@\S+\b/).to_s
#=> "xxx@gmail.com"

另见RFC-compliant regex

答案 1 :(得分:0)

你可以这样做:

[6] pry(main)> string="I will email you at xxx@gmail.com"
=> "I will email you at xxx@gmail.com"
[7] pry(main)> string.scan(/[A-Za-z\d_\-\.+]+@[A-Za-z\d_\-\.]+\.[A-Za-z\d_\-]+/)
=> ["xxx@gmail.com"]
[8] pry(main)> str2 = "I will email you at my email xxx@gmail.com"
=> "I will email you at my email xxx@gmail.com"
[9] pry(main)> string.scan(/[A-Za-z\d_\-\.+]+@[A-Za-z\d_\-\.]+\.[A-Za-z\d_\-]+/)
=> ["xxx@gmail.com"]

在“How to Find or Validate an Email Address

上有一些关于这个主题的好读物