Mysql db からデータを取得するための sql ステートメントを作成しました。myId が 3 つの英字と 4 桁の例で始まるデータを選択したいと考えていました。ABC1234K1D2
myId REGEXP '^[A-Z]{3}/d{4}'
しかし、それは私に空の結果を与えます(データはDBで利用可能です)。誰かが私を正しい方法に向けることができますか?
ほとんどの正規表現のバリエーションでは、答えは次のようになり/d
ます。数字に一致するものが欲しいと思います。/
d
\d
ただし、MySQLの正規表現の実装は多少制限されています(ドキュメントを参照)。
\d
他の数字のように文字セットへのショートカットはありません。
名前付き文字セット([[:digit:]]
)を使用するか、単に。を使用する必要があります[0-9]
。
これを試してください:
[A-Z]{3}[0-9]{4}
文字の大文字と小文字を区別しない場合。これを試して :
[a-zA-Z]{3}[0-9]{4}
まず、通常の正規表現では、数字に一致させる\d
には、代わりに/d
(これにより、一致の/
後に が続きますd
) を使用する必要があります。
それから、私は気づいていませんでしたが、MySQL では\d
(およびその他のようなもの\w
は) 利用できないようです。ドキュメントには、受け入れられる空間文字がリストされていますが、それらのジェネリック クラスは表示されません。かなり短い[:digit:]
場合でも、代わりに使用できます[0-9]
;)
/d
に置き換えるだけで問題ありません\d
。
最終的な正規表現:^[A-Z]{3}\d{4}
次のパターンを使用できます。
^[a-zA-Z]{3}\d{4}