400-685-0732

关于google analytics中的正则表达式

关于google analytics中的正则表达式

rude 一条评论
经典转载

哎,小失败一把,今天下午,至少找了两个小时的正则表达式,因为想去在ga里弄一个自定义报告,去排除一些关键词……

真尼玛是蛋蛋的忧伤啊。

因为ga里对正则的使用,有着自己的规定,对于我这种程序小白来说,算是一种很好的简化吧。

啥也不说,赶紧先弄到人家整理好的,以后备用。

正则表达式常用到的符号:

. : 这个符号是一个牌,它能够代表任何的字符;

+ : 重复前面的字符1次或者多次;

* : 重复前面的字符0次或者多次;

\d :代表任何的数字(Digit);

\s :代表任何的空格元素(Space, Tag等);

\w :代表任何的字母数字字符集与下划线(Word);

$ : 美元符号匹配字符的末端;

– : 连字符代表创建了一个范围,例如a-z 表示匹配a到z的任何字符;

|: 竖线代表或者的意思,所以a|b 表示a或b都可以匹配;

\ : 反斜杠代表让符号回归字面的意思. 例如“?” 字符的功能是匹配句子的末端, “\?” 的意思是只能匹配问号;

() : 圆括号代表了一系列的符号和元素的集. 例如, (.+) 会匹配任何的字符. 这个可以让你在整个组里边运用一个适配器. 例如,如果你相匹配”

web”, 输入“web”即可,但是也想匹配”webweb”的话,那么应该使用”(web)+”.

[] : 方括号代表了字符集, 也经常用来表示范围. 例如[a-t] 将会匹配在a和t之间的任何小写字母. 也可以在方括号里边放很多的字符,例如[a-zA-Z0-9\s-#”=],将会匹配任意的单个字母,数字,空格,连字符,数字符号,引号和等号。(这个公式还可以优化为 [\w\s-#”=],但是使用先前的表达方式是通过范围的形式表现出来的。)

{} : 花括号是用来定义重复的, 所以(web){2} 的意思是匹配what的两次重复 (webweb). 同样地, (web){2,7} 将会重复2至7间的次数 (包括3次 重复,4次重复,5次重复,6次重复)

^ : 插入符号有两个作用,它可以在字符开始时匹配, 也可以在字符集中起到否定作用。所以^[a-z]$ 的意思是只能匹配开头和结尾都是小写字母的 字符串, [^a-z] 表示不包含小写字母字符的字符串;(aaa 不行, aAa 不行, AAA可以)

?:问号有很多用处, 例如 “[1314 ]? web” 会匹配“1314 web” 或者“web”但是不能匹配“13 web”同样“13?”可以匹配“1″ 或者 “13″.

具体案例:

我们知道长尾关键字因为需求更具体,所以在电子商务中有更多的转换,因为更符合搜索者的期望,那么假如想要区分短关键字和长尾关键字的区别 ,例如1个关键字和n个关键字的区别,应该如何利用正则表达式呢?

在Google Analytics关键字报告中选择“选项”,然后选择“包含-关键字-匹配正则表达式”的选项:

^\s*[^\s]+\s*$ – 一个关键字

^\s*[^\s]+(\s+[^\s]+){1}\s*$ – 二个关键字

^\s*[^\s]+(\s+[^\s]+){2}\s*$ – 三个关键字

^\s*[^\s]+(\s+[^\s]+){3}\s*$ – 四个关键字

意思是空格(\s)重复0或多次(*),紧接着是非空内容([^\s])1或多次,再后是空格0或多次;如果需要添加更多次数的关键字,使用({number})就可以了。

符号具体介绍:

1)\反斜杠 (Backslash)

“\反斜杠”是正则表达式中最常用的符号,所以需要最先介绍,Google Analytics对于“\反斜杠”的定义是:让字符的功能失效

就是让所有特殊的字符都变成不特殊的字符,去掉特殊字符功能的意思。在现实生活中,类似明星的卸妆水,打回原形。

反斜杠可以用在任意的特殊字符上,它最常和“.点”一起使用。

例子:szwebanalytics\.com ,127\.0\.0\.1

2)^插入符(Anchors )

Google Analytics对于“^插入符”的定义是:匹配字段的开始。

也就是会所如果在^字符前边还有字符, 那么字符串就不符合这个正则表达式的要求。

假设有两个网页:

http://www.szwebanalytics.com/web/analytics/和http://www. szwebanalytics.com/analytics/.

通常情况下,按照Google Analytics的理解,就是/web/analytics/ 和 /analytics/. (因为GA已经知道域名, www. szwebanalytics.com)

如果我只想要 /analytics/,假设在正则表达式输入了/analytics/的话,那么包含这些字符的都会跑出来,包括 /web/analytics/ ,所以需要进行以下的处理:

正则表达式应该为:^/analytics/

那么就会排除掉 /web/analytics/,只会剩下 /analytics/。

3).点(dot)

Google Analytics对于“.点”的定义是 : 匹配任意的一个字符

假设正则表达式是.at, 那么hat, cat, sat和其他符合条件的四个字符的字符串都可以匹配上.

但是若是at的话,就不符合了,因为at必须要有一个字符,不能为空。

如果是正则表达式是web.com

那么webbcom,web4com,webdcom都可以匹配。

如果匹配意思为网址的话,那么正则表达式就应该是homepage\.com。(“\反斜杠”让“.点”不能发挥匹配任意一个字符的功能,而是变为字面意思)

4)?问号(Question Mark)

Google Analytics对于“?问号”的定义是:匹配0个或者1个前边的字符(表达式)

例如,想用一个正则表达式既可以匹配labor, 也可以匹配labour,那么正则表达式应该是:labou?r

5) $货币符号(Dollar Sign)

Google Analytics 对于“$货币符号”的定义是:匹配字符串的末端 。

1)假设,网站上有网页是以htm和html结尾的,如果只要htm的,那么正则表达式可以为:\.htm$

$符号的意思就是告诉GA,假设在htm中的m字母后边还有字符的话,那么字符串就不符合正则表达式的要求。

2)如果需要过滤IP地址,假设有一个ip地址的正则表达式:12\.34\.56\.78

12.34.56.78能够匹配上,但是你需要确认排除掉了12.34.56.789,所以正则表达式就应该变为12\.34\.56\.78$,同时也要排除掉512.34.56.78,那么就应该在前边加上插入符号^.即:^12\.34\.56\.78$

3)还有一个例子是关于品牌词运用的:

假设你想知道以品牌词开始的变体有多少的话,假设品牌词为Apple,那么正则表达式将是^Apple, 那么关键字例如Apple iPhone,Apple iPod,Apple Corporation都可以匹配上;

那么以Apple品牌词结尾的正则表达式呢?即:Apple$,关键字例如Apple, What is Apple, i love Apple都可以匹配上。

6)| 或者(or)

Google Analytics 对于“|或者” 的定义是:或者。

相信这个字符是正则表达式中最简单的了,假设在关键字报告中想要查找Apple设备iPhone,iPad,iPod的数据,那么正则表达式可以为:iPhone|iPad|iPod

正则表达式特性 – 匹配:

假设你写了这样的一个正则表达式:/mypage/, 意图匹配网站上叫/mypage/的网页。

没错,正则表达式会匹配/mypage/,但是同时它也会匹配/mypage/thirdpage-and-something-else, /secondpage/mypage.html ,mypage.htm ,mypage.asp等。因为正则表达式是贪婪的,它会尽可能匹配字符串。

那么如何最小化匹配呢?

案例1:解决这个问题有多种方法,即缩小包围圈,更明确:

1)更改表达式为^/mypage/,这样就只会匹配由 /mypage/开头的,可以排除掉secondpage/mypage.html ;

2) 告诉正则表达式以什么结束,假设只需要以htm结尾的,那么应该如下所示:/mypage/.*\ .htm$

反斜杠是让点回归原来的意思, .* = 匹配任意的字符串,美元符号是表明以htm结尾,这样的话就可以排除html结尾的字符串。结合后就是:^/mypage\.htm$

正则表达式实例:

对于SEO项目的跟踪是网络营销团队重要和常规的工作,SEO项目的跟踪中很重要的一个环节就是关键字的情况,例如关键字带来的访客,平均停留时间,跳出率,订单和收入等。因为长尾关键字太多,所以每个都跟踪不太现实,所以需要对主题关键字进行汇总。

假设长尾关键字是Apple iPhone 4s, Apple iPhone apps, Apple iPhone themes, 那么主题关键字就是Apple iPhone ,那么Apple iPhone 可能就会作为一个主词来跟踪。

如何跟踪?

因为在Google Analytics原始配置文件的关键字报告中,只会罗列长尾关键字的情况,如果要汇总的话,只能在搜索框中输入Apple iPhone 才有数据,这样的跟踪需要耗费大量的人力,其实可以使用GA的过滤器的search and replace功能。

7) () 圆括号 Parenthesis

在数学公式中,3*(1+2)相当于3*1 加上 3*2,

正则表达式中,“()圆括号”的作用也类似,表示字符或者字符串容器的意思。

假设正则表达式是iPhone(4|4s)的话,iPhone4 和iPhone4s都可以匹配上;

正则表达式是Ste(ph|v)en的话,Stephen 和 Steven都可以匹配上;

8)[ ]方括号 square brackets

Google Analytics 对于“[ ] 方括号” 的定义是:在列表中匹配一个单项。

但究竟什么是列表?什么是单项呢?

即:使用方括号的时候,如[aeiou],在方括号里的每个字符都是一个单项 ,a,e,i,o,u都是单项, [aeiou]则是一个列表。(需要注意的是不需要使用任何符号来分割这些单项)

例子:

假设网站上卖书,这本书是一个大的系列,分成几个部分,是以Book1,Book2,BookN…来区分的,假设只想查看某几个部分的情况,例如Book2, Book3,Book4,那么正则表达式可以如下所示:Book [234]

9)- 破折号 Dash

Google Analytics 对于 “– 破折号”的定义是:在列表中创建一个范围。

如果需要表达的意思为a,b,c,d,e,f其中一个的话,使用方括号的正则表达式是: [abcdef],如果使用破折号的好,那么就是[a-f]。只需要把首尾 两个字符列出即可,中间加“– 破折号” 即可。

有些时候,我们想要的结果也需要包含破折号-,怎么办?

例如apple-mac, apple4mac, 那么正则表达式应该为apple[-4]mac;

10)+加号 plus

Google Analytics对于“+加号”的定义是:匹配一个或者多个先前的字符或字符串。

案例1:如果在过滤器中输入web+analytics.

webanalytics, webbanalytics, webbbbanalytics都是符合条件的。

案例2:如果使用了方括号的话,例如[abc]+

那么a, ab, cab, c, b, bbbb都是符合条件的. 看起来有些奇怪,但是其实是符合定义的,因为并不需要按照字符的特定的顺序来。

案例3:如果想统计web site,b和s字母之间空很多格的关键字都需要统计的话,那么正则表达式应该是web[ ]+site.

11) *星号star

Google Analytics对于 “*星号”的定义是:* 匹配0个或者多个先前的字符或字符串。

假设某公司有几个电话号码,NUM00034,我想知道多少人在搜索34,那么在Google Analytics就可以使用正则表达式:NUM0*34, 那么NUM034,NUM0034,NUM00000034都是符合条件,NUM34也不例外。

如果想统计website, 或者web site,又或者b和s空很多格的关键字,那么正则表达式就是:web[ ]*site

那么website,web site之类的都可以匹配。

12){} 花括号 brace

“{} 花括号”的作用在于重复最后的信息(可以是单个字符,也可以是字符串)特定的次数,通常使用两个数字即可表示范围,例如{6,8},表示重复最后的信息最少6次,但不得高于8次。

例如google, 假设不确定有多少个o,那么正则表达式可以为:go{2,3}gle

意思是重复o至少2次,不大于3次。

具有匹配前面的字符之间的区别

Google Analytics对于 “*星号”的定义是:* 匹配0个或者多个先前的字符或字符串。

Google Analytics对于“+加号”的定义是:匹配一个或者多个先前的字符或字符串。

Google Analytics对于“?问号”的定义是:匹配0个或者1个前边的字符(表达式)。

相对而言, “?问号”的匹配前面字符的功能较弱,其次是“+加号”,较为强大的是“*星号”。

正则表达式案例:

1) 维基百科案例

以下是维基百科关于正则表达式的案例:

“.at”能够匹配类似hat,cat,bat的任意三个字符的字符串,因为点(.)能够匹配任意的字符。

“[hc]at” 能够匹配 hat,cat,因为方括号创建了一个列表,任意的h或c都可以,所以这个正则表达式不能匹配bat。

“[^b]at”能够匹配“.at”能匹配的任意以at结尾的字符,除了bat,因为插入符^还有一个用处,就是在方括号的起始位置时,表示的是“否定的意思”。

“^[hc]at”只匹配以hat或者cat开头的字符串,因为插入符^的意思是表示起始的意思。

“[hc]at$”只能匹配以hat或者cat结尾的字符串,因为美元符号$是表示结束的意思。

2) Robbin Steif(LunaMetrics CEO)的案例

((great )*grand)?((fa|mo)ther)

进行分解的话,比较容易理解;圆括号创建组,问号是用来分割的。

用分解的眼光去看这个正则表达式的话,就是:

(正则表达式)?(正则表达式)

问号的意思是包含0或者1个前面的表达式,所以前半部分的有无不太重要,但是还是需要理解下:

((great )*grand)

星号的意思是匹配0,1,或者大于1个前边的正则表达式,所以只要有grand就可以,有没有great没有关系。

例如grand, great grand, great great grand, 一堆的great grand 都是可以匹配的。

((fa|mo)ther)的意思是“或者”的意思,所以 (father) 或者 (mother)都是没有问题的。

在这个表达式中:((great )*grand)?((fa|mo)ther),其实有些括号是没有必要的,只是为了让脉络看起来更清晰,但是有些括号是不能去掉的,例如(fa|mo)ther),如果去掉了,就变成fa|mother , 意思就变味了,变成了fa或者mother都可以了。

默默的说一下,在给这篇文章敲回车键的时候,又把内容浏览了一遍,这会脑海里有了一个较为清醒的认识,更多的更多,还是在于以后的实践啊。
文军二维码

1 条评论

rude

十月 20, 2014 at 4:17 下午

谷歌打不开后,更想念google analytics了

 Reply

发表评论

今日说说

    问:做什么事情会让你成就感爆棚?

    答:做让你感觉心理畏惧的事情,做完之后你会发现,去TMD,不过如此。

站内搜索