代码改变世界

基本-正则表达式

2014-01-03 12:40  江湖么名  阅读(230)  评论(0编辑  收藏  举报

原帖:http://www.cnblogs.com/rayguo/p/3478613.html

我们在做爬虫的时候,要提取网页的信息,一个网页中的信息可能有很多,我们要去筛选,例如我们要获取一个网页中的所有子链接,这个就需要我们用正则表达式去匹配,匹配后得到的数据我们要的东西了,下面简单介绍一下,学过的可以当复习,没学过的就好好看看。

  正则表达式:是指一个用来描述或者匹配一系列符合某个句法规则的字符串的单个字符串,简单说,就是我们写个模板,然后去匹配字符串。

  下面我们来看看一些基本的正则表达式的语法:

  \:将下个字符标记为一个特殊的字符、一个原义字符、一个向后引用或者一个八进制转义符例如“\n”就是匹配一个换行符。

  ^:匹配开始位置,^(a)这个就匹配开头必须为a。

  $:匹配结束位置,$(a)这个就匹配结尾必须为a。

  *:匹配前面的子表达式零次或者多次,如“xu*”这个表达式就能够匹配“x”和“xuu”。

  +:匹配前面的子表达式一次或者多次,如“xu+”这个表达式就能够匹配“xuu”和“xu”,但不能够匹配“x”,这个就是和“*”的区别。

  ?:匹配前面的子表达式零次或者一次,如“xu?”这个表达式就能够匹配“jian(guo)?”就可以匹配“jian”和“jianguo”。

  {n}:n是一个非负数,匹配n次,如“guo{2}”,可以匹配“guoo”,不能匹配“guo”。

  {n,}:n是一个非负数,匹配至少n次。

  {n, m}:m、n都是非负数,最少匹配n次,最多匹配m次。

  (pattern):匹配pattern并获取匹配结果。

  (?:pattern):匹配pattern但不获取匹配结果。

  x|y:匹配x或y,如“(xu|jian)guo”匹配“xuguo”或者“jianguo”。

  [xyz]:字符集合,匹配所包含的任意字符。如“[abc]”可以匹配“apple”中的“a”。

  [^xyz]:匹配未被包含的字符。

  [a-z]:字符范围,匹配指定范围内的任意字符。

  [^a-z]:匹配指定不在范围内的任意字符。

  \b:匹配一个单词的边界,如“guo\b”可以匹配“xujianguo”中的“guo”。

  \B:匹配非单词边界,如“jian\B”可以匹配“xujianguo”中的“jian”。

  \d:匹配一个数字字符,等价于“[0-9]”。

  \D:匹配一个非数字字符。

  \f:匹配一个换页符。

  \n:匹配一个换行符。

  \r:匹配一个回车符。

  \s:匹配任何空白字符

  其实还有很多语法我就不一一列举了,先说这么多先.