Re: doc regexp_replace replacement string \n does not explained properly

From: "David G(dot) Johnston" <david(dot)g(dot)johnston(at)gmail(dot)com>
To: jian he <jian(dot)universality(at)gmail(dot)com>
Cc: PostgreSQL Hackers <pgsql-hackers(at)lists(dot)postgresql(dot)org>
Subject: Re: doc regexp_replace replacement string \n does not explained properly
Date: 2024-05-21 03:44:04
Message-ID: CAKFQuwYG5+gGjFLoAcYk8BBW4EGY6i-NQG7N2FqxyAp8eunR9A@mail.gmail.com
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-hackers

On Monday, May 20, 2024, jian he <jian(dot)universality(at)gmail(dot)com> wrote:

> hi.
>
> https://www.postgresql.org/docs/current/functions-
> matching.html#FUNCTIONS-POSIX-REGEXP
>
>
> If there is a match,
> the source string is returned with the replacement string substituted
> for the matching substring.

>
This happens regardless of the presence of parentheses.

>
> The replacement string can contain \n,
> where n is 1 through 9, to indicate that the source substring matching
> the n'th parenthesized subexpression of the pattern should be
> inserted, and it can contain \& to indicate that the substring
> matching the entire pattern should be inserted.

Then if the replacement text contains ā€œ\nā€ expressions those are replaced
with text captured from the corresponding parentheses group.

> <<
> i think it explained example like:
> SELECT regexp_replace('foobarbaz', 'b(..)', 'X\1Y', 'g');

global - find two matches to process.

foobarbaz
fooX\1YX\1Y
fooXarYXazY

>
> but it does not seem to explain cases like:
> SELECT regexp_replace('foobarbaz', 'b(..)', 'X\2Y', 'g');
>
>
foobarbaz
fooX\2YX\2Y
fooX{empty string, no second capture group}YX{empty}Y
fooXYXY

The docs are correct, though I suppose being explicit that a missing
capture group results in an empty string substitution instead of an error
is probably warranted.

David J.

In response to

Browse pgsql-hackers by date

  From Date Subject
Next Message Tihrd Reed 2024-05-21 04:06:38 Feature request: limiting isolation level choices
Previous Message jian he 2024-05-21 03:24:07 doc regexp_replace replacement string \n does not explained properly