Ruby 正则表达式分别替换每个数字,而不是整个数字
我有一个url,我想用它来替换id: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被替换了
/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的资源部分的数字