mirror of
https://github.com/postgres/postgres.git
synced 2025-06-22 02:52:08 +03:00
Implement regexp_match(), a simplified alternative to regexp_matches().
regexp_match() is like regexp_matches(), but it disallows the 'g' flag and in consequence does not need to return a set. Instead, it returns a simple text array value, or NULL if there's no match. Previously people usually got that behavior with a sub-select, but this way is considerably more efficient. Documentation adjusted so that regexp_match() is presented first and then regexp_matches() is introduced as a more complicated version. This is a bit historically revisionist but seems pedagogically better. Still TODO: extend contrib/citext to support this function. Emre Hasegeli, reviewed by David Johnston Discussion: <CAE2gYzy42sna2ME_e3y1KLQ-4UBrB-eVF0SWn8QG39sQSeVhEw@mail.gmail.com>
This commit is contained in:
@ -25,6 +25,13 @@ select substring('asd TO foo' from ' TO (([a-z0-9._]+|"([^"]+|"")+")+)');
|
||||
select substring('a' from '((a))+');
|
||||
select substring('a' from '((a)+)');
|
||||
|
||||
-- Test regexp_match()
|
||||
select regexp_match('abc', '');
|
||||
select regexp_match('abc', 'bc');
|
||||
select regexp_match('abc', 'd') is null;
|
||||
select regexp_match('abc', '(B)(c)', 'i');
|
||||
select regexp_match('abc', 'Bd', 'ig'); -- error
|
||||
|
||||
-- Test lookahead constraints
|
||||
select regexp_matches('ab', 'a(?=b)b*');
|
||||
select regexp_matches('a', 'a(?=b)b*');
|
||||
|
Reference in New Issue
Block a user