如何用正则表达式提取字符串的最后一部分?字符串的最后一部分也将是一个3位数字。
"/gdc/md/vin06hdpq8442qocut9aoih8q5j5k43u/obj/185"
答案 0 :(得分:2)
类似于:/\d+$/
应该获得字符串末尾的所有数字
答案 1 :(得分:2)
切片最后3个字符:
str = "/gdc/md/vin06hdpq8442qocut9aoih8q5j5k43u/obj/185"
p str[-3,3] # => "185"
答案 2 :(得分:1)
有许多不同的方法可以实现这一目标。
您可以使用正则表达式匹配所有尾随数字(/\d+$/
),或仅匹配最后三个尾随数字(/\d{3}$/
),具体取决于您出于某种原因需要的行为有比你预期更多的数字:
str.match(/\d+$/)[0]
#=> "185"
str.match(/\d{3}$/)[0]
#=> "185"
另一种选择是将字符串拆分为数组,使用/
作为分隔符,然后抓取最后一个元素(包含过去/
之后的所有内容。)
str.split("/").last
#=> "185"
或者您可以使用以下事实:可以使用索引访问子字符串,就像数组一样,并使用它来获取最后三位数字:
str[-3, 3]
#=> "185"
除非你在循环中进行了数千次这样的操作,否则任何性能差异都是微不足道的,所以你可以选择提供最强大和易读性的选项。
请注意,在所有四种情况下,都会返回一个字符串,因此如果您打算将此数字用作整数,则需要先使用#to_i
进行转换。
答案 3 :(得分:0)
或两者结合使用str [/ \ d {3} $ /]
或者str [-3 ..- 1]
为这个字符串设置皮肤的方法很多:)