次の構文を使用して、特定のセットから 3 文字の単語を見つけようとしています。
SELECT * FROM words WHERE word REGEXP '^[dcqaahii]{3}'
3 文字以上の単語を返します。{3} が出力の長さを制限していると思いました。
私の表現のどこが間違っているか知っている人はいますか?
前もって感謝します。
REGEXP
とは異なりLIKE
、文字列全体と一致する必要はありません。文字列の一部と一致する必要があるだけです。
正規表現に完全に一致する列が必要な場合は、正規表現にBOL文字とEOL文字の両方を含める必要があります。
'^[dcqaahii]{3}$'
regular-expressions.infoに詳細があります。
$
文字列アンカーの終わりを正規表現の最後に追加する必要があります。
SELECT * FROM words WHERE word REGEXP '^[dcqaahii]{3}$'
また、意味を変更せずに、余分なものa
やキャラクタークラスから削除することができます。i
^[dcqahi]{3}$