如何用正则表达式提取字符串的最后一部分?字符串的最后一部分也将是一个3位数的数字。
"/gdc/md/vin06hdpq8442qocut9aoih8q5j5k43u/obj/185"
发布于 2015-10-23 23:00:49
类似于:/\d+$/
应该得到字符串末尾的所有数字
发布于 2015-10-23 23:06:26
只需切片最后3个字符:
str = "/gdc/md/vin06hdpq8442qocut9aoih8q5j5k43u/obj/185"
p str[-3,3] # => "185"
发布于 2015-10-24 08:26:19
有许多不同的方法可以实现这一点。
您可以使用正则表达式来匹配所有尾随数字(/\d+$/
)或仅匹配最后三个尾随位数(/\d{3}$/
),这取决于您想要的行为,以防由于某种原因字符串的数字比您预期的要多:
str.match(/\d+$/)[0]
#=> "185"
str.match(/\d{3}$/)[0]
#=> "185"
另一个选项是将字符串拆分为一个数组,使用/
作为分隔符,然后抓取最后一个元素(它将包含最后一个/
之后的所有内容)。
str.split("/").last
#=> "185"
或者您可以使用这样的事实:可以使用索引来访问子字符串,就像数组一样,并使用它获取最后三个数字:
str[-3, 3]
#=> "185"
除非您在循环中执行了数千次,否则任何性能差异都将是微不足道的,因此您可以选择提供最健壮和最清晰的选项。
注意,在所有四种情况下,都将返回一个字符串,因此,如果您打算使用这个数字作为整数,那么首先需要使用#to_i
来转换它。
https://stackoverflow.com/questions/33312622
复制相似问题