gsub删除第一个逗号之前的所有内容

时间:2017-01-20 13:30:27

标签: ruby regex gsub

我有这个字符串:

auteur = "comte de Flandre et Hainaut, Baudouin, Jacques, Thierry"

我想在第一个逗号之前删除所有内容,即在这种情况下保留“Baudouin,Jacques,Thierry”

试过这个:

nom = auteur.gsub(/.*,/, '')

但是在最后一个逗号之前删除了每个逗号并且仅保留“Thierry”。

3 个答案:

答案 0 :(得分:8)

auteur.partition(",").last
# => " Baudouin, Jacques, Thierry"

答案 1 :(得分:6)

使用#sub代替#gsub仅删除第一个匹配项并使重复延迟(?):

auteur = "comte de Flandre et Hainaut, Baudouin, Jacques, Thierry"
nom = auteur.sub(/.*?,/, '') # => " Baudouin, Jacques, Thierry"

或者根本不使用正则表达式(如果没有逗号则返回原始字符串):

auteur.split(',', 2).last # => " Baudouin, Jacques, Thierry"

答案 2 :(得分:1)

您可以对第一个逗号使用正面的lookbehind,然后使用[]表示法使用这样的内容:

nom = auteur[/(?<=\,\s).*/]
#=> "Baudouin, Jacques, Thierry"