1

次の構文を使用して、特定のセットから 3 文字の単語を見つけようとしています。

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

3 文字以上の単語を返します。{3} が出力の長さを制限していると思いました。

私の表現のどこが間違っているか知っている人はいますか?

前もって感謝します。

4

2 に答える 2

1

REGEXPとは異なりLIKE、文字列全体と一致する必要はありません。文字列の一部と一致する必要があるだけです。

正規表現に完全に一致する列が必要な場合は、正規表現にBOL文字とEOL文字の両方を含める必要があります。

'^[dcqaahii]{3}$'

regular-expressions.infoに詳細があります。

于 2012-04-20T16:19:57.787 に答える
1

$文字列アンカーの終わりを正規表現の最後に追加する必要があります。

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

また、意味を変更せずに、余分なものaやキャラクタークラスから削除することができます。i^[dcqahi]{3}$

于 2012-04-20T16:18:54.920 に答える