Postgresql 如何删除遵循模式的子字符串
我有一个查询,它返回一个列,其中包含一个需要清理的字符串。我想删除这个字符串中以“、id:”开头并在“)”之前结束的部分。该字符串可能有许多要删除的子字符串。“id:”后面的字母数字子字符串的长度始终相同 这是一个示例字符串:Postgresql 如何删除遵循模式的子字符串,postgresql,replace,regexp-replace,Postgresql,Replace,Regexp Replace,我有一个查询,它返回一个列,其中包含一个需要清理的字符串。我想删除这个字符串中以“、id:”开头并在“)”之前结束的部分。该字符串可能有许多要删除的子字符串。“id:”后面的字母数字子字符串的长度始终相同 这是一个示例字符串: (标签:Boston,包括:true,id:9fc53def-0b9d-45cb-8f12-d42c3ca70ab2), (标签:Cambridge,包括:true,id:dda3d6d7-f9d1-45ac-ac6e-5866b356966e) 这是我希望在结尾看到的
(标签:Boston,包括:true,id:9fc53def-0b9d-45cb-8f12-d42c3ca70ab2),
(标签:Cambridge,包括:true,id:dda3d6d7-f9d1-45ac-ac6e-5866b356966e)
这是我希望在结尾看到的字符串:
(标签:Boston,包含:true),
(标签:Cambridge,包括:true)
解释模式:
匹配逗号(如果有),?
匹配单词的开头\m
匹配36个任意字符{36}
- 试试这个,它会让你
select SUBSTRING('label:Boston,include:true,id:9fc53def-0b9d-45cb-8f12-d42c3ca70ab2',1,LEN('label:Boston,include:true,id:9fc53def-0b9d-45cb-8f12-d42c3ca70ab2')-40) as stringaa;
以“、id:”开头,在“、id:”之前结束)
选择regexp_replace(字符串',id:[0-9a-f-]{36}\','),'g');
在描述中,逗号和右括号都不是可选的
或者使用更严格的模式来匹配标准Postgres UUID格式,如下所示:
选择regexp\u替换(字符串
,id:[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}\”
","g",;
相关的:
select SUBSTRING('label:Boston,include:true,id:9fc53def-0b9d-45cb-8f12-d42c3ca70ab2',1,LEN('label:Boston,include:true,id:9fc53def-0b9d-45cb-8f12-d42c3ca70ab2')-40) as stringaa;