我正在尝试使用以下语法从给定集合中查找三个字母的单词:
SELECT * FROM words WHERE word REGEXP '^[dcqaahii]{3}'
它返回超过三个字母的单词。我认为 {3} 限制了输出的长度。
有人知道我的表达有什么问题吗?
提前致谢。
您需要将字符串锚$
的结尾添加到正则表达式的末尾:
SELECT * FROM words WHERE word REGEXP '^[dcqaahii]{3}$'
此外,您可以在不改变含义的情况下从角色类中删除额外的a
和:i
^[dcqahi]{3}$
REGEXP
与 不同LIKE
,不必匹配整个字符串。它只需要匹配字符串的一部分。
如果您想要与您的正则表达式完全匹配的列,您需要在您的正则表达式中包含 BOL 和 EOL 字符:
'^[dcqaahii]{3}$'
正则表达式.info有更多细节。