小编典典

选择中的PostgreSQL正则表达式捕获组

sql

如何从SQL select返回匹配的正则表达式?我尝试使用REGEXP_EXTRACT没有运气(功能不可用)。我所做的工作 确实 是这样的:

SELECT column ~ '^stuff.*$'
FROM table;

但这给了我一个对/错的清单。我想知道每种情况下提取的是什么。


阅读 293

收藏
2021-04-22

共1个答案

小编典典

如果您试图捕获由表达式产生的正则表达式匹配项,那么substring就可以解决问题:

select substring ('I have a dog', 'd[aeiou]g')

将返回任何匹配项,在这种情况下为“ dog”。

我认为您在上面所做的尝试缺少的链接是,您需要将要捕获的表达式放在括号中。
regexp_matches在这种情况下可以使用(如果您要捕获的表达式周围加上了括号),但是每次匹配都会返回一个文本数组。如果是一场比赛,那就substring很方便了。

因此,回头看您的示例,如果您尝试返回stuff且仅当它在列的开头时才返回:

select substring (column, '^(stuff)')

或者

select (regexp_matches (column, '^(stuff)'))[1]
2021-04-22