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}