Postgres使用分隔符解析字符串

时间:2018-08-06 04:32:37

标签: regex postgresql

尝试使用SQL解析字符串,但没有在线找到任何解决方案(很抱歉,也许我在寻找错误的东西)。

我有一个字符串字段,其中包含一系列我需要提取和求和的数字。分隔符为“ \ r \ n”。

示例:“ \ r \ n-1234 somenumbersandtext123 \ r \ n -5678 sometextmorenumbers123'

因此,在此示例中,我想将1234和5678相加。

字符串的长度都是不同的,我最终需要对字符串中的数字求和。字符串详细信息文档绑定到一个项目,数字代表文件的大小(试图确定每个项目的文件总大小)。

谢谢您的指导。

2 个答案:

答案 0 :(得分:2)

您可以使用

regexp_matches(col,'(?:^|\n)\s*-\s*(\d*\.?\d+)','g')

(...)捕获的部分将是regexp_matches函数的输出。

详细信息

  • (?:^|\n)-字符串或换行符的开头
  • \s*-\s*-包含0+空格的连字符
  • (\d*\.?\d+)-捕获组1(将返回的内容):
    • \d*-0位数以上
    • \.?-1或0个点
    • \d+-1个以上的数字。

答案 1 :(得分:1)

这似乎可行:

SELECT REGEXP_MATCHES( string::text ,'\Br\Bn ?- ?([0-9]+)', 'g') from test_table