• 从零开始的python爬虫教程(Day03)


    简介

    正则表达式,又称规则表达式。(英语:Regular Expression,在代码中常简写为regex、regexp或RE),计算机科学的一个概念。正则表达式通常被用来检索、替换那些符合某个模式(规则)的文本。(来源于百度文库)

    常用匹配规则

    详细匹配规则请参考菜鸟教程

    01 普通字符

    在正则表达式里面写入普通字符,则可以直接匹配出来。

    02 元字符

    字符作用
    w 匹配字母、数字、下划线
    W 匹配非字母、非数字、非下划线
    s 匹配空白字符
    S 匹配非空白字符
    d 匹配数字
    D 匹配非数字
    A 匹配字符串开头
    z 匹配字符串结尾(包括换行)
     匹配字符串结尾(不包括换行)
    匹配换行符
    匹配制表符
    ^ 匹配字符串开头
    $ 匹配字符串结尾
    * 匹配0个以上的任意字符
    + 匹配1个以上的任意字符

    03 限定符

    字符作用
    [] 匹配一组字符,匹配[]内的任意字符
    () 匹配括号内的表达式,或一个组
    | a|b匹配a或b
    {n} 匹配n个前面的表达式
    ? 匹配0-1个前面的表达式定义的片段
    {m,n} 匹配m-n个前面的表达式定义的片段

    04 特殊字符

    由于正则表达式里面的很多字符都有其独特的作用,故此,需要用一种方式来匹配这些有作用的字符。

    就是在这些字符前面加上“”。

    这些字符包括:

    特殊字符匹配方法
    ^ ^
    * *
    + +
    . .
    ? ?
    | |
    [] [
    {} {
    () ( )
    \

    05 修饰符

    修饰符为正则表达式里面添加的标志,用于控制匹配模式。

    修饰符作用
    re.I 匹配对大小写不敏感
    re.M 可以匹配多行
    re.S 使.可以匹配换行
    re.U 匹配Unicode解析字符

    re库的部分方法

    01 match

    match会从字符串的头开始进行匹配,如果开头不匹配,则返回None。

    sentence = "Hello! I'm 12218. ✧٩(ˊωˋ*)و✧"
    
    text = re.match(r'^Hello.*?(d+).*', sentence)
    print(text)
    print(text.group())
    print(text.group(0)) # group()和group(0)作用一样,都是匹配到的全部字符串
    print(text.group(1)) # group(1)是取匹配到的第一个字符串
    

    02 search

    search会从字符串的任意位置开始进行匹配,如果非发现匹配部分,则返回None。

    text = re.search(r'ello.*?(d+).*', sentence) # search会从字符串的任意位置开始进行匹配
    print(text)
    print(text.group())
    print(text.group(0))
    print(text.group(1))
    

    03 findall

    findall是从字符串里面寻找所有符合条件的匹配部分,匹配部分返回一个列表类型,如果非发现匹配部分,则返回空列表。

    text = re.findall(r'd', sentence) # findall是从字符串里面寻找所有符合条件的匹配部分
    print(text)
    print(type(text))
    

    04 compile

    compile的方法是用于将一个正则表达式编译成一个正则表达式对象,以便重复使用。

    content = re.compile(r'.*?(d+).*?') # 将一个正则表达式编译成一个正则表达式对象,可以更方便地使用
    text = re.findall(content, sentence)
    print(text)
    

    代码下载

    完整版代码请移步我的GitHub

  • 相关阅读:
    游标加标量函数
    将一个Excel文件分隔成多个
    网页抓取的一个小例子
    ajax跨域问题
    ssh连接至Ubuntu服务器时,提示以下错误:REMOTE HOST IDENTIFICATION HAS CHANGED!
    Python 实现汉诺塔问题(递归)
    Ubuntu下环境变量设置
    文件上传 jqueryForm
    Oracle数据库安装完成后相关问题的解决
    Java中16进制与字符串之间的相互转换
  • 原文地址:https://www.cnblogs.com/lbr12218/p/14609055.html
Copyright © 2020-2023  润新知