正则表达式PCRE捕获URL中的多次出现查询字符串

标签 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_content=contentTest19



我尝试了这个:
(\?.*)(page_id=([^&]*))(\?|&)(.*[&?]utm_[a-z]+=([^&]+).*)

不幸的是,它没有产生我期望的结果。

我需要同时捕获PAGE ID和utm标记,但不希望test=valuemyvalue=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=<somenumber/text>一组带有所有带有键和值的utm标签的组

帮助将不胜感激。

最佳答案

您可以像这样制作正则表达式以获取组结果:
(?:(page_id|utm_[a-z]+)=[A-z0-9]+)(?:^\&)?

关于正则表达式PCRE捕获URL中的多次出现查询字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58929088/

相关文章:

magento - 在其他服务器上配置 Varnish

php - 如何匹配字符 '&'并在php中替换它

php - 使用 .htaccess 文件重定向

Javascript 在字符串中搜索单词不起作用

regex - 在Sublime Text 3中使用正则表达式替换

php - Varnish 缓存+ PHP

regex - 如果尾随斜杠存在,则不会发生重定向

php - 修改此正则表达式 : {([^\]]*)} to accept\]

正则表达式匹配ababba等字符串

php - 使用 PHP 和 Varnish 的客户 header