On Monday, May 20, 2024, jian he <jian.universal...@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.