すべての正規表現関数は、いくつかの例外を除いて、Javaのパターン構文を使用します。
(?m)フラグで有効にする)、行の終端として認識されるのは\nのみです。また、(?d)フラグはサポートされておらず、使用してはいけません。(?i)フラグで有効にする)は常にUnicodeを考慮して実行されます。ただし、コンテキストに依存したマッチングやローカルに依存したマッチングはサポートされていません。さらに、(?u)フラグはサポートされておらず、使用してはいけません。\uD800\uDC00はU+10000として扱われず、\x{10000}として指定する必要があります。(\b)は、基本文字を持たない非スペースマークに対して誤って処理されます。\Qと\Eは文字クラス([A-Z123]など)ではサポートされておらず、その代わりにリテラルとして扱われます。\p{prop})は以下の違いがあります:
Old_Italicの代わりにOldItalicを使用します。Is、script=、またはsc=の接頭辞なしで直接指定する必要があります。例:\p{Hiragana}In接頭辞を付けて指定する必要があります。block=やblk=の接頭辞はサポートされていません。例:\p{Mongolian}Is、general_category=、またはgc=の接頭辞なしで直接指定する必要があります。例:\p{L}Isを付けずに直接指定する必要があります。例:\p{NoncharacterCodePoint}regexp_count(string, pattern) → bigint
文字列内のパターンの出現回数を返します:
SELECT regexp_count('1a 2b 14m', '\\s*[a-z]+\\s*'); -- 3
regexp_extract_all(string, pattern) → array(varchar)
文字列内の正規表現パターンにマッチした部分文字列を返します:
SELECT regexp_extract_all('1a 2b 14m', '\\d+'); -- [1, 2, 14]
regexp_extract_all(string, pattern, group) → array(varchar)
文字列内の正規表現パターンのすべての出現を見つけ、キャプチャグループ番号groupを返します:
SELECT regexp_extract_all('1a 2b 14m', '(\\d+)([a-z]+)', 2); -- ['a', 'b', 'm']
regexp_extract(string, pattern) → varchar