美文网首页
L10:正则表达式基础

L10:正则表达式基础

作者: 水果皮儿 | 来源:发表于2018-12-21 23:08 被阅读0次

    爬虫常常获取到html文件,从中提取有效信息的一种方式就是用正则表达式,方法基础但是强大。
    正则表达式就是在字符串中寻找满足某种条件的子串。将筛选条件表示出来的符号就是正则表达式。
    Python内置了re模块,可用其完成正则表达式的匹配。
    在re模块中,常用的有5个函数,match、search、findall、sub、compile。

    re.match

    re.match(pattern, string, flags=0)
    

    pattern为正则表达式,
    string是原始字符串,
    flags是匹配模式。
    match方法从(且只从)第一个字符开始匹配。
    返回一个match对象
    可以调用group、groups、span等函数。

    re.search

    与match相类似,只是search不是必须要匹配第一个字符。

    re.findall

    相当于search的升级版。search只能匹配到第一个子串,而findall可以匹配所有子串。

    re.sub

    re.sub(pattern, repl, string, count=0, flags=0)
    

    参数多了一个repl
    sub是将原字符串中匹到的子串替换为repl

    re.compile

    re.compile(pattern, flags=0)
    

    对于常用的正则表达式,可以先用compile,得到对象可以调用match、serach等函数。

    常见问题

    1.贪婪匹配
    .* 可以匹配任意字符,会尽可能的多匹配字符,所以会导致某些问题。
    比如用.(\d)匹配手机号,我们得到的手机号只有一位数字,因为其它数字被.匹配了。所以通常用 .*? 来进行非贪婪匹配,把字符留给后面的表达式。

    2.匹配换行符
    . 默认可以匹配除换行外的所有字符,如果把匹配模式设置为re.S,则 . 可以匹配换行符。

    3.转义字符
    比如 ? 表示匹配0个或1个,但如果要匹配字符串中的 ? , 则要进行转义:?。

    相关文章

      网友评论

          本文标题:L10:正则表达式基础

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