regexp_matches and regexp_split are inconsistent
От | Tom Lane |
---|---|
Тема | regexp_matches and regexp_split are inconsistent |
Дата | |
Msg-id | 17867.1186795534@sss.pgh.pa.us обсуждение исходный текст |
Ответы |
Re: regexp_matches and regexp_split are inconsistent
Re: regexp_matches and regexp_split are inconsistent |
Список | pgsql-hackers |
I noticed the following behavior in CVS HEAD, using a pattern that is capable of matching no characters: regression=# SELECT foo FROM regexp_matches('ab cde', $re$\s*$re$, 'g') AS foo; foo -------{""}{""}{" "}{""}{""}{""}{""} (7 rows) regression=# SELECT foo FROM regexp_split_to_table('ab cde', $re$\s*$re$) AS foo;foo -----abcde (5 rows) If you count carefully, you will see that regexp_matches() reports a match of the pattern at the start of the string and at the end of the string, and also just before 'c' (after the match to the single space). However, regexp_split() disregards these "degenerate" matches of the same pattern. Is this what we want? Arguably regexp_split is doing the most reasonable thing for its intended usage, but the strict definition of regexp matching seems to require what regexp_matches does. I think we need to either change one function to match the other, or else document the inconsistency. Thoughts? regards, tom lane
В списке pgsql-hackers по дате отправления: