Python爬虫入门——2. 3 正则表达式

       正则表达式对于新手来说,不够友好,因为表达式是由符号构成的,新手看到他会一脸茫然,但是在提取网页信息的时候,熟练运用正则表达式会起到事半功倍的效果。学习正则表达式是你学习网络爬虫绕不过去的。接下来我们就简单介绍一下正则表达式。

       之所以称之为正则表达式是因为这串特殊的字符串可以识别  “正则字符串(regular string)” 。所谓的正则字符串指的是有个规律的字符串。你给的字符串符合我的正则表达式我就返回这串字符串;如果不符合我的表达式,我就会忽略它。下面我们列出常用的正则表达式符号,然后在一一进行讲解:

声明:参考资料  《从零开始学Python网络爬虫》  作者:罗攀、蒋仟    机械工业出版社

                            《python网络数据采集》 作者:[美]Ryan Mitchell   陶俊杰、陈小莉 译  人民邮电出版社

    

一般字符
字符含义

.

匹配任意单个字符(包括数字、符号、空格,但不包括换行符   \ n)
\转义字符(即把有特殊含义的字符转换为普通字符)
[....]匹配任意一个字符(相当于从  [  ]  里面任意选择一个)

 例:a.b                              匹配 acb、 asb、a#b、a@b、a&b等等

        \^  ,\\ ,\|                   匹配   ^ , \ , |

        [A-Z],[a-z],[0-9]       匹配   B,b,5   或者 G,h,3  等,只要是方括号里面的都有可能

        

预定义字符集
预定义字符集含义
\d匹配一个数字字符。等价于 [0 -9] (即从0 - 9 里面任选一个)
\D匹配一个非数字字符。等价于 [^ 0-9](即从不是0-9的字符里面任选一个)
\s匹配任意空白字符,包括空格、制表符、换页符等。等价于[ \f\n\r\t\v]
\S匹配任意非空白字符。等价于 [^\f\n\r\t\v]
\w匹配包括下划线的任意单词字符。等价于 '[A-Za-z0-9_]'
\W匹配任何非单词字符。等价于 '[^A-Za-z0-9_]'

 例:\d    匹配  0 或 5 或 6 或 9  等

        \D    匹配 d 或 D 或 c 或 h  等

 

数量词
数量词含义
*匹配前一个字符、子表达式或括号里的字符0次或无限次
+匹配前一个字符、子表达式或括号里的字符1次或无限次
匹配前一个字符、子表达式或括号里的字符0次或1次
{m}匹配前一个字符、子表达式或括号里的字符m次
{m,n}匹配前一个姿符、子表达式或括号里的字符 m 至 n 次

 例:a*b             匹配   b、aab、ab、aaaaab  等    

      (abc)*d     匹配  d、abcd、abcabcacbd  等

        a+b             匹配  ab、aab、aaaaab  等

      (ABC)+b   匹配  ABCb、ABCABCb、ABCABCABCb 等

        a?b            匹配  b、ab

      (abc)?d   匹配  d、abcd

        a{5}             匹配  aaaaa

        a{2,6}        匹配 aa、aaa、aaaa、aaaaa、aaaaaa

 

边界匹配
边界匹配含义
^指定字符串开始位置的字符或子表达式
$从字符串的末端匹配
\A仅匹配字符串的开头
\Z仅匹配字符串的结尾

 例:^a    匹配  a、apsd、aspe、asfref  等a开头的字符串

        abc$ 匹配 abc结尾的字符串  如:qwepabc、deabc 等

 

现在介绍这些字符的几个重要组合。

1.        .*     点星 这两个字符组合的意思是,匹配所有字符串。

2.        (.*?)这个叫做非贪婪算法。它可以匹配任意的字符。是爬虫实战中经常用到的表达式。例如  ssHellossWorldss!ss

          使用费贪婪算法    ss(.*?)ss    就可以得到  Hello World !

        

 

讲完正则表达式之后,接着介绍一下 re 模块。re 模块可以使Python拥有所有的整的表达式功能。具体请参考博文

Python--re模块

 

 

 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值