在ruby中用正则表达式提取字符串中的数字

时间:2018-05-27 14:17:30

标签: ruby

我有这个字符串

url = "#AppDashboardPlace:p=io.transporterapp.deep.test1&appid=4975603106871514996"

我想获得4975603106871514996

我试过了

url.to_s[/\appid\=(.*?)\&/, 1]
=> nil

2 个答案:

答案 0 :(得分:5)

您的正则表达式不匹配,因为appid值后面没有&。试试这个:

url.to_s[/appid=(\d+)/,1]

如果您将匹配部分保留为.*?后面没有任何内容,则它将匹配可能的最小字符串数,即空字符串。如果您知道appid是字符串的最后一部分,那么您可以使用.*而不使用?,但最好是精确的并指定您要查找的是一系列一个或多个(+)十进制数字(\d)。

答案 1 :(得分:1)

您可以将String#match与\ d regex匹配器一起使用,以便在\d+上进行匹配,这意味着一个或多个数字。

url = "#AppDashboardPlace:p=io.transporterapp.deep.test1&appid=4975603106871514996"
match = url.match(/appid\=(\d+)/)
# => #<MatchData "appid=4975603106871514996" 1:"4975603106871514996">
puts match[0]
# => "appid=4975603106871514996"
puts match[1]
# => "4975603106871514996"