使用正则表达式在第一个逗号之前提取文本

时间:2012-08-27 20:02:25

标签: ruby regex

我想在第一个逗号(名字和姓氏)之前从字符串中提取文字,如:

John Smith, RN, BSN, MS
Thom Nev, MD
Foo Bar, MD,RN

我尝试使用正则表达式:

(.*)\s(.*),\s

但这并不适用于所有情况。 怎么做到这一点?

7 个答案:

答案 0 :(得分:58)

匹配从字符串开头到第一个逗号的所有内容:

^(.+?),

答案 1 :(得分:18)

如何:yourString.split(",")[0]

答案 2 :(得分:6)

您必须使用非贪婪的正则表达式运算符,请尝试:(.+?),而不是:(.+),。请注意,使用贪婪的运算符时,您将匹配最后一个逗号而不是第一个逗号之前的所有内容。

答案 3 :(得分:5)

以下内容如何:

[^,]*

[^,]*表示“匹配任意数量的非逗号字符”,我认为这正是您在此尝试做的。您可能希望将其锚定到字符串^的开头,如下所示:

^[^,]*

答案 4 :(得分:3)

^([^,])+

这个正则表达式在Sublime中为我工作。它选择了第一个逗号之前的所有内容。

答案 5 :(得分:0)

^[a-zA-Z0-9]+ 

..使用此...这是获得第一个逗号分隔值的正确答案

答案 6 :(得分:-2)

非正则表达式解决方案:

str = 'John Smith, RN, BSN, MS'
p str[0, str.index(',')] #=>"John Smith"