我有一个像这样的字符串“some text!11.22.33”,当我打电话
时"some text !11.22.33".scan(/!(\w+)/)[0].join.to_s
它只返回“11”。 我想返回“11.22.33”,因此扫描功能必须跳过点并取出所有字符串。我怎么能这样做?
答案 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;被捕获)。