正規表現の概要
フロントでは、一致、比較、およびワイルドカードを使用してデータを見つけることができます。ただし、フィルタリング条件の複雑さが増すにつれて、以前のフィルタリング方法は失敗しました。これには、より強力なマッチング方法-正規表現を使用する必要があります
正規表現は、特殊な文字列(文字セット)を照合するために使用されます。たとえば、テキストから電話番号を抽出する場合は、正規表現を使用できます。
あらゆる種類のプログラミング言語、テキストエディタ、オペレーティングシステムが正規表現をサポートしています。広く使用されています。他の言語と同様に、正規表現にも文法があります
MySQL正規表現を使用する
前述のように、正規表現はテキストの照合に使用されます。正規表現をテキスト文字列と比較します。MySQLは、WHERE句を使用した正規表現の予備サポートを提供します。これにより、SELECTによって取得されたデータをフィルタリングする正規表現を指定できます。もちろん、MySQLは正規表現のサブセットのみをサポートし、正規表現には実際には他の多くの関数があります。
正規表現の使用
- 基本的な文字照合(テキスト20を含む年齢の列のすべての行を取得します)
SELECT * FROM user WHERE age REGEXP '20'
- 任意の文字に一致(。は正規表現の特殊文字であり、任意の文字に一致することを意味します)
SELECT * FROM user WHERE name REGEXP '.飞'
- ORマッチング(正規表現特殊文字|を使用して、2つのストリングのいずれか、またはこのストリング、または別のストリングを検索します)
SELECT * FROM user WHERE age REGEXP '20|30'
- 複数の文字列の1つに一致します([123]は文字のセットを定義します。つまり、1または2または3に一致します。これは[1 | 2 | 3]としても理解できます)
- [] ORの別の形式です
SELECT * FROM user WHERE name REGEXP '[123]小'
- 一致範囲([123456789]このタイプのコレクションを簡略化するために、使用して範囲を定義できます)
- [1-9]、文字の範囲も可能[a-z]
SELECT * FROM user WHERE name REGEXP '[1-3]小'
- 特殊文字を一致させる(正規表現言語は特殊文字で構成されます。これらの文字を一致させる必要がある場合は、エスケープ文字\\を使用する必要があります)
- ほとんどの正規表現はスラッシュ\エスケープ特殊文字を使用しますが、MySQLは2つ必要です
SELECT * FROM user WHERE name REGEXP '\\.'
- 文字クラスに一致
- 以下に示すように、便宜上、事前定義された文字セット(文字クラスとも呼ばれます)を使用できます。
- 複数のインスタンスを一致させる
- これまでのところ、一致するすべての文字が1回出現しました。一致の数を制御する場合は、メタ文字を繰り返し使用する必要があります
メタキャラクター | 解説 |
* | 0以上の一致 |
+ | 1つ以上の一致({1、}と等しい) |
? | 0または1一致({0、1}と等しい) |
{n} | 指定された数の一致 |
{n、0} | 指定された一致数以上 |
{n、m} | 一致する番号範囲(mは255を超えない) |
SELECT * FROM user WHERE name REGEXP 'ticks?'
- ロケーター(これまでのところ、文字列に一致するのは任意の位置にあるテキストです。特定の位置にあるテキストに一致させるには、ロケーターを使用する必要があります)
- たとえば、数値または小数点で始まるすべてのものを見つけたいとします。
メタキャラクター | 解説 |
^ | テキストの始まり |
ドル | テキストの終わり |
[[:<:]] | 言葉の始まり |
[[:>:]] | 言葉の終わり |
SELECT * FROM user WHERE name REGEXP '^[0-9\\.]'