2011-06-09 63 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。