代码之家  ›  专栏  ›  技术社区  ›  Iniyavan

PostgreSQL-提取第一组圆括号之间的值

  •  0
  • Iniyavan  · 技术社区  · 8 月前

    考虑一个字符串 Ana (16) and Brian (14) are my children.

    如何获取第一个括号的值?( '16' 在这种情况下。)

    我试过了 substring('Ana (16) and Brian (14) are my children.' from '\((.+)\)')

    但它给出了错误的结果 16) and Brian (14 。(我能打通 strpos substring 结合体但是需要一个更好的regexp解决方案。)

    2 回复  |  直到 8 月前
        1
  •  2
  •   Dogbert    8 月前

    您的正则表达式几乎是正确的,您只需要使用非贪婪重复来匹配最短的字符串: +? 而不是 + :

    # select substring('Ana (16) and Brian (14) are my children.' from '\((.+?)\)');
     substring
    -----------
     16
    (1 row)
    
        2
  •  0
  •   Frank Heikens    8 月前

    我喜欢使用regex函数,比如regexp_matches。这个有效:

    SELECT (regexp_matches('Ana (16) and Brian (14) are my children.', '\(([^)]+)\)'))[1];