正则表达式仅在文本值中匹配值一次

时间:2012-07-30 02:16:02

标签: ruby regex

我正在处理一个脏数据源,它有一些我必须提取的键值对。例如:

  

名字= John姓氏= Smith家庭电话= 555-333-2345工作电话=电子邮件= john.doe@email.com Zip From = 11772 Zip To = 11782 First Name = John First Name = John

要提取名字,我正在使用这个正则表达式:

/First Name = ([a-zA-Z]*)/

如上所示重复名字的情况下如何防止多次匹配?

这是version of this on Rubular

3 个答案:

答案 0 :(得分:3)

match只会获得第一场比赛(您可以使用scan获取所有内容):

str.match(/First Name = ([a-zA-Z]*)/).captures.first
#=> "John"

(鉴于您的字符串位于str

答案 1 :(得分:0)

[]也会给你第一场比赛:

str[/First Name = ([a-zA-Z]*)/, 1]

1表示第一个捕获组

答案 2 :(得分:0)

/ ^名字=([a-zA-Z] *)/

这也会奏效。只需添加^表示行的开头