正規表現でデータを照合する

正規表現の概要

フロントでは、一致、比較、およびワイルドカードを使用してデータを見つけることができます。ただし、フィルタリング条件の複雑さが増すにつれて、以前のフィルタリング方法は失敗しました。これには、より強力なマッチング方法-正規表現を使用する必要があります

正規表現は、特殊な文字列(文字セット)を照合するために使用されます。たとえば、テキストから電話番号を抽出する場合は、正規表現を使用できます。

あらゆる種類のプログラミング言語、テキストエディタ、オペレーティングシステムが正規表現をサポートしています。広く使用されています。他の言語と同様に、正規表現にも文法があります

 

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\\.]'

 

 

元の記事を138件公開しました 賞賛されました34 再生回数150,000回

おすすめ

転載: blog.csdn.net/bbj12345678/article/details/105472944