Ruby 正则表达式分别替换每个数字,而不是整个数字

Ruby 正则表达式分别替换每个数字,而不是整个数字,ruby,regex,Ruby,Regex,我有一个url,我想用它来替换id: /api/users/123456/count\u挂起的消息 如果我这样做,它将替换每个数字的ID: url.gsub(/[\d]/, 'ID') Ruby有这个o标志。所以我很自然地尝试这样附加它: url.gsub(/[\d]/o, 'ID') 但它仍然替换每个数字,而我想替换整个数字(即123456)。我在这里遗漏了什么?如果您试图替换123456,您应该尝试/\d+/ +是表示一个或多个数字的量词 您所做的是逐个匹配每个数字。因此,ID被替换了

我有一个url,我想用它来替换id:

/api/users/123456/count\u挂起的消息
如果我这样做,它将替换每个数字的ID:

url.gsub(/[\d]/, 'ID')
Ruby有这个
o
标志。所以我很自然地尝试这样附加它:

url.gsub(/[\d]/o, 'ID')

但它仍然替换每个数字,而我想替换整个数字(即
123456
)。我在这里遗漏了什么?

如果您试图替换
123456
,您应该尝试
/\d+/

+是表示一个或多个数字的量词

您所做的是逐个匹配每个数字。因此,
ID
被替换了六次


如果您试图替换
123456
,则需要使用
/\d+/
匹配整个
编号
,您应该尝试
/\d+/

+是表示一个或多个数字的量词

您所做的是逐个匹配每个数字。因此,
ID
被替换了六次


您需要通过使用
/\d+/
匹配整个
数字,您应该使用
子方法,并且您应该更改您的正则表达式

match = /
   (?<=\/users\/)  
   \d+              
/x

url.sub match, 'ID'
match=/

(?您应该使用
sub
方法,并且您应该更改您的正则表达式

match = /
   (?<=\/users\/)  
   \d+              
/x

url.sub match, 'ID'
match=/
(?为了将123456(这是一个资源)替换为ID,您必须使用

url.gsub(/\/\d+\//, '/ID/')
它只会将资源部分的数字替换为ID。

以便将123456(资源)替换为您必须使用的ID

url.gsub(/\/\d+\//, '/ID/')
它将只替换作为ID的资源部分的数字