Étant donné que j'ai la chaîne suivante:
String 1 | string 2 | string 3
Je veux que mon expression régulière corresponde à la valeur après le dernier tube et espace, qui dans ce cas est "chaîne 3". p >
En ce moment, je suis en train d'utiliser ceci: / [^ |] + $ / i mais cela renvoie également le caractère espace après le tube.
3 Réponses :
'String 1 | string 2 | string 3'.scan(/[\|\s]?(\w+\s\d+)/).last # ["string 3"]
Excellente réponse Sebastian Palma. Si l'OP le souhaite sous forme de chaîne, il peut faire: 'String 1 | chaîne 2 | chaîne 3'.scan (/ \ | \ s (\ w + \ s \ d + \ z) /). map (&: first) .join ("','")
Sans regex:
"String 1 | string 2 | string 3".split(" | ").last # => "string 3"
str = "string 1 | string 2 | string 3" str[/[^ |][^|]*\z/] #=> "string 3"
Utilisez
s [/ \ s * ([^ |] *?) \ S * \ z /, 1]. Cependant, pourquoi ne pas utiliserstrip?