如何使用正则表达式将确切的字符串与多个URL匹配?

我正在使用缓存并且我将user_id与缓存页面一起存储,当用户注销时,我需要使用user_id清除特定用户缓存页面的缓存。我使用后面的正则表达式来删除匹配的user_id

cache_store.delete_matched("*id=#{current_user.id}*") 

它在与第一个数字匹配时删除所有URL,例如,如果我想删除id = 12,它会删除所有URL。

 "localhost:3000/foo?id=123" "localhost:3000/foo?id=12" "localhost:3000/foo?id=129" 

我想删除id = 12的URL。帮我解决这个问题。

尝试cache_store.delete_matched("id=#{current_user.id}")

在这种情况下,用户标识不能跟随任何数字。

 cache_store.delete_matched("id=#{current_user.id}([\D]|$)") 

这匹配以userid结尾的URL ,或者包含userid后跟除了数字之外的任何内容。

编辑

在Regexpal上找不到Share -button,所以我发布了我的结果。 请注意,我复制了我的regex字符串并将#{current_user.id}替换为94 。 蓝色和黄色都是匹配。 似乎只有你的例子中的正确行是匹配,不是吗?

在此处输入图像描述

编辑2

由于OP仍然无法成功删除多个URL ,因此另一个更新。 我怀疑周围的代码存在一些错误。 此示例正在运行:

 id = 94 array = [ "id=94", "id=94a", "id=945" ] clean = Array.new regex = Regexp.new('id=' + id.to_s + '([\D]|$)') for url in array if url =~ regex clean << url end end puts clean 

如果这仍然无法解决您的问题,请考虑发布负责删除URL的相关function。 还请提供这些URL的容器。