したがって、この文字列がある場合aassdd
このコード:
regexp_matches('aassdd', 'a', 'g')
2 つの異なる行を返します。
すべての一致を 1 つの行として取得することは可能ですか? たとえば、array
上記のコードからの1行のタイプとして、必要な結果は次のとおりです。{a,a}
したがって、この文字列がある場合aassdd
このコード:
regexp_matches('aassdd', 'a', 'g')
2 つの異なる行を返します。
すべての一致を 1 つの行として取得することは可能ですか? たとえば、array
上記のコードからの1行のタイプとして、必要な結果は次のとおりです。{a,a}
plperl
ある程度高性能なものを探しているなら、
CREATE LANGUAGE plperl;
CREATE FUNCTION regexp_return_matches(text, text)
RETURNS text[]
AS $$
my ( $input, $pattern ) = @_;
$pattern = quotemeta($pattern);
return [$input =~ m/($pattern)/g];
$$ LANGUAGE plperl;
SELECT regexp_return_matches('aassdd', 'a');
regexp_return_matches
-----------------------
{a,a}
(1 row)