如何使用模式在Rails中拆分字符串?

时间:2016-11-30 12:05:29

标签: ruby-on-rails string split

我有一个像这样的字符串“some text!11.22.33”,当我打电话

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

它只返回“11”。 我想返回“11.22.33”,因此扫描功能必须跳过点并取出所有字符串。我怎么能这样做?

1 个答案:

答案 0 :(得分:1)

如果您的字符串始终采用此格式,请使用

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

对于正则表达式方法,您可以使用匹配捕获:

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

请参阅Ruby demo

<强>详情:

  • ! - 文字!符号
  • ([\d.]+) - 捕获第1组:一个或多个数字或点
  • 1参数告诉Ruby仅输出捕获的值

替代正则表达式是/!(\d+(?:\.\d+)*)/,它将捕获1个数字,然后是0个或更多个.和1+个数字的序列(因此,如果有一个尾随点,它会赢得&#39;被捕获)。