PostgreSQL 正規表現に一致した全ての文字列を取得する

PostgreSQL 正規表現に一致した全ての文字列を取得する

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

環境

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

正規表現に一致した全ての文字列を取得

正規表現に一致した全ての文字列を取得するには、「regexp_matches」でオプションに「g」を使用します。

regexp_matches(文字列,正規表現,'g');

実際に、取得してみます。
※「カンマ」は任意の1文字にマッチするという正規表現です。

SELECT 
regexp_matches('abcde abcde aiueo', 'a.', 'g');

実行結果

パラメーター「i」

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

SELECT 
regexp_matches('abcde Abcde Aiueo', 'a.', 'g'),
regexp_matches('abcde Abcde Aiueo', 'a.', 'ig');

実行結果

存在しない正規表現

存在しない正規表現を使用すると、結果は何も返りません。

SELECT 
regexp_matches('abcde Abcde Aiueo', 'f.', 'g');

実行結果

複数の正規表現を使用

以下のように複数の正規表現を使用することも可能です。

SELECT 
regexp_matches('Abcde abCde aBcde', '(a.)(c.)', 'ig');

実行結果