これらの文は機能します
SELECT (regexp_matches('Euroschinus Hoff+300'::text, E'(Euroschinus Hoff[\+])([0- 9]+)'::text)::text[])[1]::text as counter
select array_scientificname from simple_cal where array_scientificname ~ 'Semecarpus'
ただし、括弧がある場合は、テキストのどこを気にしないでください。どちらも機能しません
SELECT (regexp_matches('Euroschinus (testing) Hoff+300'::text, E'(Euroschinus (testing) Hoff[\+])([0-9]+)'::text)::text[])[1]::text as counter
select array_scientificname from simple_cal where array_scientificname ~ 'Semecarpus(test)'
テキストを取得したいだけです。() には定義されたパターンはなく、テキストのどこにでも配置できます。
括弧の前に \ を使用するとうまくいくことに気付きましたが (以下を参照)、これはまったく実用的ではありません。文字列で () が許可されている場所を含める必要があると思います...
SELECT (regexp_matches('Euroschinus (testing) Hoff+300'::text, E'(Euroschinus jaffrei \\(testing\\) Hoff[\+])([0-9]+)'::text)::text[])[1]::text as counter