Postgresql正则表达式返回多个值

时间:2015-05-14 14:36:28

标签: sql regex postgresql

我在postgres中有一个场景,我需要收集多组方括号之间的所有条目。

以下示例将是我希望捕获的内容:

SELECT (regexp_matches('Hello [World] How [Are] You','\[(.*?)\]')) 

但这只是返回

{World}

忽略第二个[Are]部分。

在常规正则表达式中,这似乎有效,所以我不确定它为什么会在这里失败。

理想情况下,我想将结果作为csv文本字符串返回。 e.g。

World,Are

但我似乎无法找到正确的查询来执行此操作。

任何意见都表示赞赏。谢谢。

1 个答案:

答案 0 :(得分:3)

你必须使用'g'标志

SELECT (regexp_matches('Hello [World] How [Are] You','\[(.*?)\]','g'))
  

“g”标志表示应该测试正则表达式   反对字符串中所有可能的匹配。