我有这个网址,我想用以下内容替换id:
/api/users/123456/count_pending_messages
如果我这样做,它将替换每个数字的ID:
url.gsub(/[\d]/, 'ID')
Ruby有这个o
标志。所以很自然地我试着像这样添加它:
url.gsub(/[\d]/o, 'ID')
但它仍然替换每个数字,而我想替换整个数字(即123456
)。我在这里缺少什么?
答案 0 :(得分:5)
如果您要替换123456
,则应尝试/\d+/
。
+ 是表示一个或多个数字的量词。
您正在做的是逐个匹配每个数字 。所以ID
被替换六次。
您需要使用number
匹配整个/\d+/
。
答案 1 :(得分:3)
您应该使用sub
方法,并且应该更改正则表达式。
match = /
(?<=\/users\/)
\d+
/x
url.sub match, 'ID'
答案 2 :(得分:0)
为了将123456(这是一种资源)替换为ID,您必须使用
url.gsub(/\/\d+\//, '/ID/')
它只会将那些作为资源一部分的数字替换为ID。