我正在尝试编写一个正则表达式,用于匹配包含
的网址的Google Analytics目标?包=任何
以及
/成功
用户首先会访问
这样的页面www.website.com/become-client/的?包= greatpackage
如果他们购买,他们将进入此页面
www.website.com/become-client/的?包= greatpackage /成功
基于此,我可以使用以下正则表达式
\?包\ = greatpackage /成功
这应与正确的目的地匹配,我可以在Google Analytics的目标设置中使用此功能来创建购买greatpackage包的目标。
但有时网站除了?包之外还会使用其他参数。喜欢?type,?media等。
α型=业务
导致像这样的网址
www.website.com/become-client/?package=greatpackage?type=business
如果他们购买,他们将进入此页面
www.website.com/become-client/?package=greatpackage?type=business/success
现在/ success部分离开了?package部分。我的问题是如何编写仍然匹配此URL的正则表达式,无论这些部分之间可能存在哪些其他参数?
--- ----更新
@jonarz提出以下内容,它就像一个魅力。
\?包\ = greatpackage(。*?)/成功
但如果有两个名称几乎相同的产品呢?例如,greatpackage和greatpackageULTRA。上面的代码将选择两者。如果无法更改产品名称,我怎样才能只选择其中一个?
答案 0 :(得分:2)
可以解决编辑中引入的问题的正则表达式是:
\?package\=greatpackage((\?|\/)(.*?))?\/success(\/|\b)
这是一个测试:https://regex101.com/r/jS4cH5/1,它似乎符合您的需求。
答案 1 :(得分:0)
如果你想匹配这样的网址:
www.website.com/become-client/?package=greatpackage?type=business?other=nada/success
使用组提取包类型:
.*\?package=([^\/?]+).*\/success
没有小组(只是匹配网址,如果它包含package = greatpackage并且成功)
.*\?package=greatpackage.*\/success
没有任何包类型的组和匹配:
.*\?package=[^\/?]+.*\/success
您只需添加.*
即可匹配任何字符(新行除外)。 [^ /?] *部分用于确保您的包裹类型不是空的(即:第一个字符不是/
也不是?
)。