RegEx for Google Analytics:根据字符串中附加的单独ID值匹配网址

时间:2013-07-24 20:36:05

标签: regex google-analytics

对于Google Analytics漏斗,我想编写一个与以下pti ID匹配的regEx:

1,5,8,13,14,49,79

例如,这些是有效的网址

  • /OrderProcess/OrderConfirmation.aspx?pti=1
  • /OrderProcess/OrderConfirmation.aspx?pti=1|16
  • /OrderProcess/OrderConfirmation.aspx?pti=48|1|47
  • /OrderProcess/OrderConfirmation.aspx?pti=5|7|11

但这些不是:

  • /OrderProcess/OrderConfirmation.aspx?pti=16
  • /OrderProcess/OrderConfirmation.aspx?pti=2|16|51

此正则表达式匹配以数字开头但与管道后的数字不匹配的网址:

.*OrderConfirmation.*pti=(1|5|8|13|14|49|79).*

有近100个ID,它们可以按任何顺序出现在变量中。有可能吗?

2 个答案:

答案 0 :(得分:0)

您需要转义管道,因为它们是正则表达式中的保留符号:

.*OrderConfirmation.*pti=(1|1\|16)

将匹配/OrderProcess/OrderConfirmation.aspx?pti=1/OrderProcess/OrderConfirmation.aspx?pti=1|16

(从这里开始添加其余部分应该很容易。)

请注意,如果你这样写:

.*OrderConfirmation.*pti=(1|1\|16).*

然后表达式将匹配.*OrderConfirmation.*pti=1或。* OrderConfirmation。* pti = 1 | 16` 后跟任何。如果您想允许其他参数(并非总是存在),您需要:

.*OrderConfirmation.*pti=(1|1\|16)($|&.*)

这意味着第一个表达式可以跟在字符串结尾或&后面,后面可以跟着任何东西。

答案 1 :(得分:0)

您需要“字边界”正则表达式\b

.*OrderConfirmation.*pti=.*\b(1|5|8|13|14|49|79)\b.*

使用单词边界表示id 1与| 17 |不匹配。

在各种边缘案例的rubular上查看live demo