使用正则表达式匹配包含一个单词和另一个单词的URL

时间:2015-12-11 09:28:55

标签: regex google-analytics

我正在尝试编写一个正则表达式,用于匹配包含

的网址的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。上面的代码将选择两者。如果无法更改产品名称,我怎样才能只选择其中一个?

2 个答案:

答案 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

您只需添加.*即可匹配任何字符(新行除外)。 [^ /?] *部分用于确保您的包裹类型不是空的(即:第一个字符不是/也不是?)。