2011-06-09 64 views
1

我想写一个谷歌分析的正则表达式,将采取xxxxx.xxxxx.xxx.mail.foo.tld的所有来源,并改写它mail.foo.tld谷歌分析广义mail.foo.tld正则表达式过滤器?

目前我有两个主要设置 - mail.live.com和mail.yahoo.com。

Field A -> Extract A -- Campaign source -- .*\.mail\.yahoo\.com$ 
Output To -> Constructor -- Campaign source -- mail.yahoo.com 

但是,我有半数其他xxxx.xxxxx.mail.foo.tld,我想重写。

这是我到目前为止有:

Field A -> Extract A -- Campaign source -- .*\.mail\.(\w+)\.(\w+).*$ 
Output To -> Constructor -- Campaign source -- mail.$A1.$A2 

我希望能有$ A1是域名和$ A2是域名(.com,.net和.co.uk等)。

我特别担心.co.uk和类似的东西不会变成垃圾,因为一旦他们垃圾,我无法返回并编辑GA记录。有什么建议么?

+0

不要忘记像'w'这样的字符类需要转义,所以它实际上应该是'\ w' – rtpHarry 2011-06-09 20:03:43

回答

2

取决于你试图匹配这可能是工作方式是什么:

Field A -> Extract A -- Campaign source -- .+\.mail\.([\w\.]+)$ 
Output To -> Constructor -- Campaign source -- mail.$A1 

这意味着:

.+\.  - this bit requires some kind of subdomain before mail 
mail\.  - this requires a mail. subdomain in there 
([\w\.]+)$ - this requires something to be after the mail. and captures the 
       whole lot into a single capture group. It doesn't matter if 
       this is a .com .co.uk etc 

当我说“根据什么花样”我在想什么是 - 有没有什么会以这种方式夹住结尾($)从而阻碍比赛。如果在最后标记了querystrings等,那么这可能会有问题,你应该使用不同的技术(如果你可以发布一些示例字符串,你需要匹配它会有所帮助)

事实上,如果是这样的话,你可以只是使第二TLD可选:

Field A -> Extract A -- Campaign source -- .+\.mail\.([\w]+(\.[\w]+)?)$ 
Output To -> Constructor -- Campaign source -- mail.$A1 

在这种情况下,它说和以前一样,但(\.[\w]+)?意味着可选的第二.TLD

+0

这很好,谢谢你的帮助。据我了解,GA已经截断了URL ...所以$ clamp应该可以正常工作。 – Ted 2011-06-10 01:40:50

0

我通常使用这一个:它把标准到底的域字符串,具有2到4个字符的tld,并处理任意数量的子域级别:

(messag|courrier|zimbra|imp|mail)(.*)\.(.*)\..{2,4}$ 

除了这里提到的服务外,您还可以自定义您想要捕获的服务列表,具体取决于您所在地区的ISP。