2016-11-30 16 views
1

我有這樣的「一些文字!33年11月22日」的字符串,當我打電話如何在模式中分割Rails中的字符串?

"some text !11.22.33".scan(/!(\w+)/)[0].join.to_s 

它僅返回「11」。 我想返回「11.22.33」,所以掃描功能必須跳過點並取所有的字符串。我該怎麼做?

回答

1

如果你的字符串始終以這種格式,只需使用

"some text !11.22.33".partition('!').last 

對於一個正則表達式的方法,你可以使用與捕捉匹配:

"some text !11.22.33"[/!([\d.]+)/, 1] 

Ruby demo

詳細

  • ! - 字面!符號
  • ([\d.]+) - 捕獲組1:一個或多個數字或點
  • 1參數告訴紅寶石只輸出所捕獲的值

備選的正則表達式是/!(\d+(?:\.\d+)*)/那將捕獲1+數字,然後捕獲.和1+數字的0或更多序列(因此,如果存在尾點,則不會被捕獲)。

+0

太棒了!非常感謝! – ValeMarz

+0

如果數字和點總是以字符串結尾的已知格式,那麼可以使用'rpartition'而不是'partition':'「一些文本!11.22.33」.rpartition('!')。last' –