Add assorted new regexp_xxx SQL functions.
authorTom Lane <tgl@sss.pgh.pa.us>
Tue, 3 Aug 2021 17:08:49 +0000 (13:08 -0400)
committerTom Lane <tgl@sss.pgh.pa.us>
Tue, 3 Aug 2021 17:08:49 +0000 (13:08 -0400)
commit6424337073589476303b10f6d7cc74f501b8d9d7
tree12aaf35032d9e80c4564160a0937bb40ea25a5f1
parent9e51cc87fd0ac46b183cb7302a6751d52d3f159a
Add assorted new regexp_xxx SQL functions.

This patch adds new functions regexp_count(), regexp_instr(),
regexp_like(), and regexp_substr(), and extends regexp_replace()
with some new optional arguments.  All these functions follow
the definitions used in Oracle, although there are small differences
in the regexp language due to using our own regexp engine -- most
notably, that the default newline-matching behavior is different.
Similar functions appear in DB2 and elsewhere, too.  Aside from
easing portability, these functions are easier to use for certain
tasks than our existing regexp_match[es] functions.

Gilles Darold, heavily revised by me

Discussion: https://postgr.es/m/fc160ee0-c843-b024-29bb-97b5da61971f@darold.net
doc/src/sgml/func.sgml
src/backend/utils/adt/regexp.c
src/backend/utils/adt/varlena.c
src/include/catalog/catversion.h
src/include/catalog/pg_proc.dat
src/include/utils/varlena.h
src/test/regress/expected/strings.out
src/test/regress/sql/strings.sql