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.
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 |