如何使用正则表达式在URL中找到2个组?

时间:2014-04-18 17:58:54

标签: regex

我不是交易程序员,但我需要使用正则表达式在Google跟踪代码管理器中创建规则。我的目标是查看URL并在URL中找到两个单独的组匹配。这是一个示例网址

http://123.website.com/?&guid=blahblahblah&page=something&type=abc&adv=abc1234&site={siteID}

我最初有这个正则表达式,如果不是"& guid = blahblahblah& page = something&"在两组之间。如何在一个表达式中检查这两个组?

(http:\/\/)(([0-9])|([0-9][0-9])|([0-9][0-9][0-9]))\.website\.com\?(type\=abc)

奖励:如何检查https以及http?

THX!

2 个答案:

答案 0 :(得分:0)

它实际上比你想象的容易:

/https?:\/\/([\d]{1,4})\.website\.com\/.*?&type=(.*?)&.*?/

http://regex101.com/r/nU5yP2

答案 1 :(得分:-1)

在您对此答案的第一个版本发表评论后,我在 Google跟踪代码管理器的第Tags, Rules, Macros, and the Data Layer页上阅读了一些关于规则的内容。

显然,如果网址

,您需要一个返回 true 的规则
  1. http://https://
  2. 开头
  3. 任意数字,包含1到3位数字,
  4. .website.com/
  5. 并在网址中也包含type=abc
  6. 我无法对此进行测试,但以下规则应该有效:

    {{url}} matches RegEx https?://\d{1,3}\.website\.com/.*type=abc.*adv=.*
    

    Google跟踪代码管理器的正则​​表达式引擎希望支持来自Perl正则表达式语言集的那些基本正则表达式。

    说明:

    http是一个固定字符串,必须在开头的URL中存在。

    Sam写道,s之后的问号使得s成为可选项。

    ://也是一个固定字符串,必须在httphttps之后存在于网址中。

    \d{1,3}匹配任何数字(0-9)至少一次,但不超过3次。因此它匹配0到999之间的数字。任何其他字符或更多数字都会导致规则的 false

    \.website\.com/也是一个固定的字符串,其中该点被解释为文字字符。

    .*匹配网址的任何字符的两倍或更多次。