【发布时间】:2017-08-07 03:33:39
【问题描述】:
我有一个看起来像这样的字符串:
"name=Guy&Id=e8679b5a-bf27-46c6-aaf0-ef0eced1945e&Family.Id=e8679b5a-bf27-46c6-aaf0-ef0eced1945e,aaa79b5a-bf27-46c6-aaf0-ef0eced1945e,eee79b5a-bf27-46c6-aaf0-ef0eced1945e&Children.Id=bbb79b5a-bf27-46c6-aaf0-ef0eced1945e,ccc79b5a-bf27-46c6-aaf0-ef0eced1945e,ddd79b5a-bf27-46c6-aaf0-ef0eced1945e&Father.Id=fff79b5a-bf27-46c6-aaf0-ef0eced1945e"
我想要一个正则表达式,可以找到所有组合(String.Id 及其 UUID),例如:
Family | e8679b5a-bf27-46c6-aaf0-ef0eced1945e,aaa79b5a-bf27-46c6-aaf0-ef0eced1945e,vvv79b5a-bf27-46c6-aaf0-ef0eced1945e
Children | bbb79b5a-bf27-46c6-aaf0-ef0eced1945e,ccc79b5a-bf27-46c6-aaf0- ef0eced1945e,ddd79b5a-bf27-46c6-aaf0-ef0eced1945e
Father | fff79b5a-bf27-46c6-aaf0-ef0eced1945e
我正在尝试在 PostgreSQL 中解析它,目前我可以解析其中的一部分,但不是全部:
SELECT
regexp_matches('"name=Guy&Id=e8679b5a-bf27-46c6-aaf0-ef0eced1945e&Family.Id=e8679b5a-bf27-46c6-aaf0-ef0eced1945e,aaa79b5a-bf27-46c6-aaf0-ef0eced1945e,vvv79b5a-bf27-46c6-aaf0-ef0eced1945e&Children.Id=bbb79b5a-bf27-46c6-aaf0-ef0eced1945e,ccc79b5a-bf27-46c6-aaf0-ef0eced1945e,ddd79b5a-bf27-46c6-aaf0-ef0eced1945e&Father.Id=fff79b5a-bf27-46c6-aaf0-ef0eced1945e"'
,'&(\w*)\.Id=([0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12})', 'g')::text
谢谢
【问题讨论】:
-
您使用什么语言/工具?
-
我正在尝试在 postgreSQL 中执行此正则表达式,但任何语言都应该没问题 :) 即使在这里:regex101.com
-
从一条记录变为多条记录在任何 SQL 风格中都可能很棘手。
-
我用我已经写过的东西更新了这个问题,但我只得到一个 UUID,我需要考虑逗号的部分。
-
不要让数据库做应用语言可以做的更容易和更好的事情。
标签: sql regex postgresql