我正在尝试使用以下语法从给定集合中查找三个字母的单词:
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有更多细节。