redis keys命令不适用于某些字符

时间:2013-12-22 23:33:27

标签: regex redis key

我无法弄清楚为什么某些redis KEYS命令的行为如此。

这将返回以“string:term”开头的所有键:

keys "tag:[term]*"

当我输入.js(甚至转义它)时,它会返回包含.js所有键 - 我正在尝试的“正则表达式”的第二部分包括:

keys "tag:[term\.com]*"; 
keys "tag:[term.com]*";

对于某些背景,documentation表示方括号内的正则表达式:

  

h [ae] llo匹配hello和hallo,但不匹配hillo

1 个答案:

答案 0 :(得分:1)

KEYS命令不使用正则表达式,而是使用glob-style pattern matching(与基本的Unix shell兼容)。

keys "tag:[term]*"

确实会返回比“以tag:term开头的所有键”更多的键。它返回以tag开头的所有键:加上['t','e','r','m']中的单个字符。

要返回以tag:term开头的所有键,您需要使用“tag:term *”

文档并不意味着正则表达式,只是全局模式。