logo

MySQL REGEXP_REPLACE() 関数

MySQL REGEXP_REPLACE() 関数はパターン マッチングに使用されます。この機能 文字列内で正規表現パターンを検索し、出現するパターンをすべて置換します。 指定された正規表現パターンに一致する指定された文字列を使用します。一致するものが見つかった場合は、文字列全体と置換文字列が返されます。一致するものが見つからない場合、返される文字列は変更されません。式、パターン、および置換文字列が NULL の場合、関数は NULL を返します。

REGEXP_REPLACE()、REPLACE()、 そして TRANSLATE() で機能する MySQL これらは同じように機能します。ただし、TRANSLATE では複数の単一文字の置換が可能であり、REPLACE 関数では 1 つの文字列全体が別の文字列に置換され、REGEXP_REPLACE では文字列から正規表現パターンが検索されます。

構文

以下は、MySQL でこの関数を使用するための基本的な構文です。

 REGEXP_REPLACE (expression, pattern, replace_string[, pos[, occurrence[, match_type]]]) 

パラメータの説明

REGEXP_REPLACE() 関数パラメータの説明は次のとおりです。

表現: これは、正規表現のパラメータと関数による検索を実行する入力文字列です。

パターン: これは、部分文字列の正規表現パターンを表します。

置換文字列: 一致するものが見つかった場合に置換される部分文字列です。

REGEXP_INSTR() 関数は、以下に示すさまざまなオプションのパラメータを使用します。

位置: 検索を開始する文字列内の式の位置を指定するために使用されます。このパラメータを指定しない場合は、位置 1 から開始されます。

発生: これは、どの一致が検索されるかを指定するために使用されます。このパラメータを指定しない場合、すべての出現箇所が置き換えられます。

マッチタイプ: これは正規表現を調整できる文字列です。照合には次の使用可能な文字が使用されます。

    c:これは、大文字と小文字を区別した一致を表します。私:これは、大文字と小文字を区別しない一致を表します。メートル:これは、文字列内で行終了記号を使用できる複数行モードを表します。デフォルトでは、この関数は文字列の先頭と末尾の行終端記号と一致します。n:を変更するために使用されます。 (ドット) 文字は行終了文字と一致します。で:Unix のみの行末を表します。

さまざまな例でそれを理解しましょう。

次のステートメントは、MySQL の REGEXP_REPLACE 関数の基本的な例を説明しています。

 mysql> SET @str = 'Javatpoint is a great websites'; mysql> SELECT @str AS 'Original String', REGEXP_REPLACE(@str, 'great', 'an educational') AS 'Replaceable String'; 

出力は次のとおりです。

MySQL REGEXP_REPLACE() 関数

入力文字列に次のものが含まれているとします。 文字列内の複数の一致 の場合、この関数はそれらをすべて置き換えます。以下のステートメントを参照してください。

 mysql> SET @str = 'BCA MCA BBA BCA BBA'; mysql> SELECT @str AS 'Original String', REGEXP_REPLACE(@str, 'BBA', 'PGDCA') AS 'Replaceable String'; 

出力は次のとおりです。

MySQL REGEXP_REPLACE() 関数

入力文字列と置換可能な文字列に一致するものがない場合、ステートメントは元の文字列を返します。以下の例を参照してください。

 mysql> SET @str = 'BCA MCA BBA BCA BBA'; mysql> SELECT @str AS 'Original String', REGEXP_REPLACE(@str, 'MBA', 'PGDCA') AS 'Resultant String'; 

出力は次のとおりです。

MySQL REGEXP_REPLACE() 関数

文字列を次のように置き換えたい場合は、 位置を指定する 置換を開始するには、次のように REGEX_REPLACE 関数を使用します。

 mysql> SET @str = 'BBA BCA BBA BCA BBA'; mysql> SELECT @str AS 'Original String', REGEXP_REPLACE(@str, 'BBA', 'MCA', 2) AS 'Replaceable String'; 

このステートメントでは、置換を開始する位置を 2 に指定しています。このクエリを実行すると、以下の出力が得られ、置換可能な文字列の最初の位置が置換されていないことがわかります。

MySQL REGEXP_REPLACE() 関数

デフォルトでは、一致する文字列がすべて置換されることがわかっています。ただし、一致する文字列を置換するための特定の出現箇所を指定するオプションもあります。 発生 パラメータ。以下の例を参照してください。

 mysql> SET @str = 'BBA BCA BBA BCA BBA'; mysql> SELECT @str AS 'Original String', REGEXP_REPLACE(@str, 'BBA', 'MCA', 2, 2) AS 'Replaceable String'; 

この例では、置換可能な文字列の開始位置は、最初の出現が開始された後の 2 です。したがって、オカレンス 2 はオカレンス 1 になり、オカレンス 3 はオカレンス 2 になりました。以下の出力を参照してください。

MySQL REGEXP_REPLACE() 関数

追加のパラメーターを提供して、一致タイプの引数を使用して正規表現を調整できます。 例えば 、これを使用して、一致で大文字と小文字が区別されるかどうか、または行末文字が含まれるかどうかを確認できます。を指定している以下の例を参照してください。 大文字と小文字を区別 そして 大文字と小文字を区別しない一致:

 mysql> SET @str = 'BBA BCA BBA BCA BBA'; mysql> SELECT @str AS 'Original String', REGEXP_REPLACE(@str, 'bba', 'MCA', 1, 0, 'c') AS ' Case-Sensitive', REGEXP_REPLACE(@str, 'bba', 'MCA', 1, 0, 'i') AS ' Case-Insensitive'; 

出力は次のとおりです。

MySQL REGEXP_REPLACE() 関数