我有这个字符串
url = "#AppDashboardPlace:p=io.transporterapp.deep.test1&appid=4975603106871514996"
我想获得4975603106871514996
我试过了
url.to_s[/\appid\=(.*?)\&/, 1]
=> nil
答案 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"