Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/design-patterns/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Postgresql 如何删除遵循模式的子字符串_Postgresql_Replace_Regexp Replace - Fatal编程技术网

Postgresql 如何删除遵循模式的子字符串

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) 这是我希望在结尾看到的

我有一个查询,它返回一个列,其中包含一个需要清理的字符串。我想删除这个字符串中以“、id:”开头并在“)”之前结束的部分。该字符串可能有许多要删除的子字符串。“id:”后面的字母数字子字符串的长度始终相同

这是一个示例字符串:

(标签: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",;
      
      相关的:


      要删除的字符串是否始终是标准Postgres输出格式的UUID?小写十六进制,带4个破折号。@ErwinBrandstetter是的。示例字符串是一个值,而不是两个值。该模式可以在一个值内重复多次。您拥有哪种类型的数据集…??谢谢@laurenz,非常有效。你能帮助我理解“?”、“”和“{}”在模式中的用法吗?我已经添加了一些解释。
      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;