PostgreSQL 正規表現に一致した文字列を置換する

PostgreSQL 正規表現に一致した文字列を置換する

PostgreSQLで、正規表現に一致した全ての文字列を取得する手順を記述してます。「regexp_replace」に対象の文字列と正規表現と置換する文字列を指定することで可能です。実行結果はpgadmin上で確認してます。

環境

  • OS CentOS Stream release 9
  • PostgreSQL 15.1
  • pgadmin4 6.16

正規表現に一致した文字列を置換

正規表現に一致した文字列を置換するには、「regexp_replace」を使用します。

regexp_replace(文字列,正規表現,'置換する文字列');

実際に、置換してみます。
※「\d」は「0~9」にマッチするという正規表現です。

SELECT 
regexp_replace('abc1abc2abc', '\d', '-');

実行結果を見ると最初に見つかった数値が置換されていることが確認できます。

全て置換

パラメーター「g」を使用すると全て置換できます。

SELECT 
regexp_replace('abc1abc2abc', '\d', '-', 'g');

実行結果

大文字小文字を区別しない

パラメーター「i」を使用すると大文字小文字を区別せずに置換できます。

SELECT 
regexp_replace('abcAzcAec', 'a.', '-', 'gi');

実行結果

存在しない正規表現を使用

存在しない正規表現を使用すると何も置換されず元の値のままとなります。

SELECT 
regexp_replace('abc', 'f.', '-', 'g');

実行結果