PostgreSQL regexp_matches() 函数使用指南

PostgreSQL regexp_matches() 函数从一个字符串中返回指定的正则表达式的第一次匹配的结果;如果使用了 g 标识,则返回所有的匹配结果。

regexp_matches() 函数与 regexp_match() 函数类似,不同的地方是 regexp_match() 永远只返回第一个匹配的结果,而 regexp_matches() 在使用了 g 标识时则返回所有的匹配结果。

regexp_matches() 函数使用 POSIX 正则表达式。

regexp_matches() 语法

这里是 PostgreSQL regexp_matches() 函数的语法:

regexp_matches(string, regex[, flags])  set of text[]

参数

string
必需的。 一个字符串。
regex
必需的。 正则表达式。
flags
可选的。 正则表达式的匹配模式。

返回值

PostgreSQL regexp_matches() 函数返回一个字符串数组的集合,集合中的每个数组对应着正则表达式的每次匹配的内容。

如果字符串中没有包含和正则匹配的内容,则此函数返回 NULL

如果正则表达式中包含分组,那么每个分组匹配的内容将成为返回数组的一个元素。

regexp_matches() 示例

这个示例演示了如何使用 regexp_matches() 函数从字符串中返回由正则表达式捕获的结果:

SELECT regexp_matches('abcd abcd abcd', 'ab.');
 regexp_matches
----------------
 {abc}

这里, 在 POSIX 正则表达式中,. 意味着任何一个字符。

您可以在参数 flags 中使用 g 标识得到正则表达式所有的匹配。比如:

SELECT regexp_matches('abcd abcd abcd', 'ab.', 'g');
 regexp_matches
----------------
 {abc}
 {abc}
 {abc}

您可以在参数 flags 中使用 i 标识在使用正则表达式匹配的时候忽略大小写。比如:

SELECT regexp_matches('Abcd abCd aBcd', 'ab.', 'ig');
 regexp_matches
----------------
 {Abc}
 {abC}
 {aBc}

您可以在正则表达式中使用多个分组,比如:

SELECT regexp_matches('Abcd abCd aBcd', '(a.)(c.)', 'ig');
 regexp_matches
----------------
 {Ab,cd}
 {ab,Cd}
 {aB,cd}