美文网首页Python爬虫
六. 正则表达式

六. 正则表达式

作者: 橄榄的世界 | 来源:发表于2018-02-14 23:12 被阅读0次

    1. 正则表达式常用符号

    1)一般字符

    字符 含义 举例 匹配结果
    . 匹配任何单个字符(不包括换行符\n) a.b 匹配"abc,a&c"等,但不包括换行符。
    \ 转义字符(将特殊含义的字符转成原来的意思) . 匹配为“.”。
    [...] 字符集,相当于在中括号中任选一个 a[bcd] 匹配为“ab”,“ac”,“ad”。

    2 ) 预定义字符集

    字符 含义 等价结果
    \d 匹配一个数字字符 [0-9]
    \D 匹配一个非数字字符 [^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+’来匹配一个字符1或无限次,例如可以匹配“字数 345”中的“345”。

    常见空白字符 含义 ASCII码值
    \f 换页(FF),将当前位置移到下页开头 012
    \n 换行(LF) ,将当前位置移到下一行开头 010
    \r 回车(CR) ,将当前位置移到本行开头 013
    \t 水平制表(HT) (跳到下一个TAB位置) 009
    \v 垂直制表(VT) 011

    3 ) 数量词

    数量词 含义 举例 匹配结果
    * 匹配前一个字符0或无限次 ab*c 匹配ac,abc,abbc,abbbc等
    + 匹配前一个字符1或无限次 ab+c 匹配abc,abbc,abbbc等
    ? 匹配前一个字符0或1次 ab?c 匹配ac,abc
    {m} 匹配前一个字符m次 ab{3}c 匹配abbbc
    {m,n} 匹配前一个字符m至n次 ab{1,3}c 匹配abc,abbc,abbbc

    4 ) 边界匹配

    边界匹配符 含义 举例 匹配结果
    ^ 匹配字符串开头 ^abc 匹配以abc开头的字符串
    $ 匹配字符串结尾 abc$ 匹配以abc结尾的字符串
    \A 匹配字符串开头 \Aabc 匹配以abc开头的字符串
    \Z 匹配字符串结尾 abc\Z 匹配以abc结尾的字符串

    边界匹配符在爬虫实战中较少使用。

    最后介绍爬虫实战中常用的(.?),"()"表示返回结果,".?"为非贪婪算法,匹配任意字符。

    符号 含义 举例 匹配结果
    (.*?) 匹配任意字符 xx(.*?)xx 匹配"xxIxxjshdxxlovexxsffaxxpythonxx"中的"I","love","Python"。

    举例:

    import re
    a = 'xxIxxjshdxxlovexxsffaxxpythonxx'
    infos = re.findall('xx(.*?)xx',a)
    print(infos)
    

    结果:
    ['I', 'love', 'python']

    2. re模块函数及标志修饰符

    1) re模块函数

    函数名 语法 含义
    search() re.search(pattern,string,flags=0) 匹配并提取第一个符合规律的内容,返回一个正则表达式对象。
    sub() re.sub(pattern,repl,string,count=0,flags=0) 用于替换字符串中的匹配项。repl:替换后的字符串。string:替换前的字符串。
    findall() re.findall(pattern,string,flags=0) 匹配并提取所有符合规律的内容,以列表形式返回结果。

    pattern:匹配的正则表达式。
    string:匹配的字符串。
    flags:标志位,对应标志修饰符。
    repl:替换后的字符串。
    count:匹配后替换的最大次数,默认0表示替换所有的匹配。

    sub()类似于字符串的replace()函数,但sub()函数更加灵活,可以使用正则表达式进行匹配,但replace()做不到。fjndall()在爬虫实战中使用得最多。

    2) re标志修饰符

    标志修饰符 含义 说明
    re.I 对大小写不敏感 例如a可以匹配a或A。
    re.L 做本地化识别(Local-aware)的匹配
    re.M 多行匹配,影响^ 和 $
    re.S 可匹配包括换行符在内的所有字符,实现跨行匹配 最常用
    re.U 根据unicode字符集解析字符,此标志影响\w \W \b \B。
    re.X 该标志给予更灵活的格式,以便将正则表达式写得更容易理解。

    相关文章

      网友评论

        本文标题:六. 正则表达式

        本文链接:https://www.haomeiwen.com/subject/nfxytftx.html