正则表达式使用空格清除id并从字符串中提取

时间:2018-12-15 12:56:17

标签: regex postgresql

我有这样的字符串,带有嵌入式ID。 Id应该是9个连续数字,但通常是这样写的。我只想提取ID,然后消毒,以便其9个连续数字

ID OF 20067 8641 IS RELATED 
WITH40106117 7.
AND 301287 532 
OR 301 287 532

此正则表达式解释了(用\ 1 \ 2代替)上面的第一个和第三个示例。我不知道第二个和第四个示例。

.*[\s]([0-9]{1,9})\s([0-9]{1,9}).*

https://regex101.com/r/zEhSsy/1/

我正在使用 regexp_replace 写这篇文章,但是只有正则表达式解决方案可以。

1 个答案:

答案 0 :(得分:1)

如果数字之间只有空格,则可以删除它们并提取9位数字的序列。

with t as --test data
(
select s::text from 
( VALUES ( 'ID OF 20067 8641 IS RELATED'), 
('WITH40106117 7.'),
('AND 301287 532 '),
('OR 301 287 532') ) as s 
) --test data ends 
select  s,SUBSTRING ( replace(s,' ','') FROM '\d{9}' ) as id from t;

Demo