Re: doc regexp_replace replacement string \n does not explained properly - Mailing list pgsql-hackers

From David G. Johnston
Subject Re: doc regexp_replace replacement string \n does not explained properly
Date
Msg-id CAKFQuwYG5+gGjFLoAcYk8BBW4EGY6i-NQG7N2FqxyAp8eunR9A@mail.gmail.com
Whole thread Raw
In response to doc regexp_replace replacement string \n does not explained properly  (jian he <jian.universality@gmail.com>)
List pgsql-hackers
On Monday, May 20, 2024, jian he <jian.universality@gmail.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.

pgsql-hackers by date:

Previous
From: jian he
Date:
Subject: doc regexp_replace replacement string \n does not explained properly
Next
From: "Tihrd Reed"
Date:
Subject: Feature request: limiting isolation level choices