在 Postgres 中使用代码
select regexp_matches('02417 02444 02442 ','^(\d{5})\s{1,}(:?(\d{5})\s{1,})*','g');
产量
{'02417','02442','02442'}
在我期待的时候
{'02417','02444','02442'}
我应该怎样做才能得到预期的结果?
(显然我的情况要复杂得多,我将其简化为一个简单的例子。这就是说,一个简单的答案只是根据上面的具体情况定制的,这是不相关的,答案应该解决如何在任何情况下获得所有匹配项) .
你可以尝试(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'), ' ');