1

我正在尝试使用以下语法从给定集合中查找三个字母的单词:

SELECT * FROM words WHERE word REGEXP '^[dcqaahii]{3}'

它返回超过三个字母的单词。我认为 {3} 限制了输出的长度。

有人知道我的表达有什么问题吗?

提前致谢。

4

2 回答 2

1

您需要将字符串锚$的结尾添加到正则表达式的末尾:

SELECT * FROM words WHERE word REGEXP '^[dcqaahii]{3}$'

此外,您可以在不改变含义的情况下从角色类中删除额外的a和:i^[dcqahi]{3}$

于 2012-04-20T16:18:54.920 回答
1

REGEXP与 不同LIKE,不必匹配整个字符串。它只需要匹配字符串的一部分。

如果您想要与您的正则表达式完全匹配的列,您需要在您的正则表达式中包含 BOL 和 EOL 字符:

'^[dcqaahii]{3}$'

正则表达式.info有更多细节。

于 2012-04-20T16:19:57.787 回答