Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/regex/19.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
Sql 用于查找uuid和文本的Regex_Sql_Regex_Postgresql - Fatal编程技术网

Sql 用于查找uuid和文本的Regex

Sql 用于查找uuid和文本的Regex,sql,regex,postgresql,Sql,Regex,Postgresql,我有一个字符串,看起来像这样: "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,cc

我有一个字符串,看起来像这样:

"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),如:

我正试图在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
谢谢

您可以使用:

替换为:

$1 | $2\n
它的作用是:

首先,它查找可选出现的
name=[^&]+&Id=[^&]+
,即
name=
,后跟至少一个非
&
字符(
[^&]+
),后跟
&Id=
,后跟至少一个非
&
字符(
[^&]+
)。这都被包装在一个非捕获组
(?:…)
,后面跟着一个
,表示该组是可选的


正则表达式的其余部分查找
&
,然后是第一个捕获组(
$1
),该组至少包含一个字母字符(
([a-zA-Z]+)
),然后是
.Id=
,然后是第二个捕获组(
$2
),至少包含一个非
&
字符(
([^&]+
).

您使用的是什么语言/工具?我试图在postgreSQL中使用这个正则表达式,但任何语言都应该可以:)即使在这里:从一个记录到多个记录在任何类型的SQL中都可能很棘手。我用我已经编写的内容更新了这个问题,但我只得到一个UUID,我需要的部分也会考虑逗号。不要让数据库做一个应用程序语言可以做的更容易和更好。
(?:name=[^&]+&Id=[^&]+)?&([a-zA-Z]+).Id=([^&]+)
$1 | $2\n