postgres 正则表达式模式意外结果

问题描述 投票:0回答:1

在 Postgres 中使用代码

select regexp_matches('02417 02444 02442 ','^(\d{5})\s{1,}(:?(\d{5})\s{1,})*','g');

产量

{'02417','02442','02442'}

在我期待的时候

{'02417','02444','02442'}

我应该怎样做才能得到预期的结果?

(显然我的情况要复杂得多,我将其简化为一个简单的例子。这就是说,一个简单的答案只是根据上面的具体情况定制的,这是不相关的,答案应该解决如何在任何情况下获得所有匹配项) .

regex postgresql
1个回答
0
投票

你可以尝试(fiddle here):

SELECT
  REGEXP_SPLIT_TO_ARRAY(TRIM('02417    02444 02442  '), '\s+');

结果(两个结果相同 - 这可能是更好的解决方案):

regexp_split_to_array
{02417,02444,02442}

或者

SELECT
  STRING_TO_ARRAY(REGEXP_REPLACE(TRIM('02417    02444 02442   '), '\s+', ' ', 'g'), ' ');
© www.soinside.com 2019 - 2024. All rights reserved.