Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/selenium/4.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
Regex PCRE在URL中捕获多个事件查询字符串_Regex_Pcre_Varnish - Fatal编程技术网

Regex PCRE在URL中捕获多个事件查询字符串

Regex PCRE在URL中捕获多个事件查询字符串,regex,pcre,varnish,Regex,Pcre,Varnish,我试图捕获URL中多次出现的utm标记,并在重新写入URL时追加。然而,我只想要utm键值,跳过其他键值 这是一个示例URL https://example.com/dl/?screen=page&title=SABC&page_id=4063&myvalue=Noidea&utm_source=sourceTest19&utm_medium=mediumTest19&utm_campaign=campaignTest19&utm_term=termTest19&test=value&utm_c

我试图捕获URL中多次出现的utm标记,并在重新写入URL时追加。然而,我只想要utm键值,跳过其他键值

这是一个示例URL

https://example.com/dl/?screen=page&title=SABC&page_id=4063&myvalue=Noidea&utm_source=sourceTest19&utm_medium=mediumTest19&utm_campaign=campaignTest19&utm_term=termTest19&test=value&utm_content=contentTest19

我试过这个:

(\?.*)(page_id=([^&]*))(\?|&)(.*[&?]utm_[a-z]+=([^&]+).*)
不幸的是,它并没有产生我所期望的结果

我需要捕获页面ID和utm标记,但不需要
test=value
myvalue=Noidea
,只需要带有utm标记的查询字符串

预期结果是以下URL:

https://example.com/dl/page_id/4063?utm_source=sourceTest19&utm_medium=mediumTest19&utm_campaign=campaignTest19&utm_term=termTest19&utm_content=contentTest19

一组具有
pageid=

一个组,包含所有带键和值的utm标记


我们将不胜感激

您可以这样设置正则表达式以获得组结果:


(?:(page_id|utm[a-z]+)=[a-z0-9]+(?:^\&)

您可以用空字符串替换与所需参数不匹配的任何参数。这种模式是

(?:[?&](?!(?:page_id|utm_[^=&]++)=)[^&]*+)++$|(?<=[?&])(?!(?:page_id|utm_[^=&]++)=)[^&]*+(?:&|$)

(?:[?&](?!(?:page_id|utm|utm|utm=&]+=)[^&]*++$)(?我们可以将它们组合在一起吗?我计划在重写URL时将它们用作查询字符串