regex - 仅在 PostgreSQL 中显示不同的正则表达式匹配

标签 regex postgresql

我正在尝试编写一个函数来解析字符串中的主题标签,并且只想显示每个唯一的主题标签一次。

我正在使用 postgres regexp_matches 函数,并尝试了各种模式组合以使其仅显示每个唯一主题标签的一个实例,但运气不佳。

假设我有一个看起来像这样的字符串:

this has #abc and also #def and another #abc and even an #bc

目前我正在使用的功能:

REGEXP_MATCHES(mystring, '(#[A-Za-z0-9_]+)', 'g')

返回

#abc
#def
#abc
#bc

我如何修改我的函数,以便它只返回不同/唯一的匹配项,并且我得到一个看起来像这样的集合?

#abc
#def
#bc

最佳答案

SELECT DISTINCT 
    q.hash
FROM (
    SELECT 
        REGEXP_MATCHES(mystring, '(#[A-Za-z0-9_]+)', 'g') AS hash
    FROM mytable
) q

关于regex - 仅在 PostgreSQL 中显示不同的正则表达式匹配,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58458671/

相关文章:

python - 对多行使用正则表达式

javascript - 如果下一行字符具有相同的字符集,则合并一组字符?

r - 检测前两列数字组合相同的行,选择第三列数字最大的行

Django ORM 从查询集中提取工作日作为字符串

javascript - Foundation Abide 匹配换行符

regex - Notepad++ regex 如何替换第三次出现的斜杠并绕过第一个和第二个斜杠?

sql - 窗口函数的确定性排序顺序

c - 如何在 postgres 扩展中定义动态字符串数据类型?

ruby-on-rails - 唯一性区分大小写 false 导致查询慢

javascript - 由于尖号 (#) 字符,javascript 正则表达式捕获中缺少字符