"a string of words!".match(/(.*\s)*(.+)\Z/)[2] #=> 'words!' улавливается из последнего пробела. Это будет включать пунктуацию.
Чтобы извлечь это из массива строк, используйте его с помощью collect:
["a string of words", "Something to say?", "Try me!"].collect {|s| s.match(/(.*\s)*(.+)\Z/)[2] } #=> ["words", "say?", "me!"]
Ответ 5
Это самый простой способ, о котором я могу думать.
hostname> irb
irb(main):001:0> str = 'This is a string.'
=> "This is a string."
irb(main):002:0> words = str.split(/\s+/).last
=> "string."
irb(main):003:0>