• python的正则表达式联系-01


    1.正则表达式
    正则表达式是用来匹配与查找字符串的,从网上爬取数据自然或多或少会用到正则表达式,python的正则表达式要先引入re模块,正则表达式以r引导,例如:
    其中**r“\d+”**正则表达式表示匹配连续的多个数值,search是re中的函数,从"abc123cd"字符串中搜索连续的数值,得到"123",返回一个匹配对象,结果如上.

    import re
    reg = r"\d+"
    m = re.search(reg, "abc123cd")
    print(m)
    
    • 1
    • 2
    • 3
    • 4

    2.字符串"\d"匹配0~9之间的一个数值

    import re
    reg = r"\d"
    m = re.search(reg, "abc123cd")
    print(m)
    
    • 1
    • 2
    • 3
    • 4

    3.字符"+“重复前面一个匹配字符一次或者多次.
    注意:**r"b\d+”**第一个字符要匹配"b",后面是连续的多个数字,因此"是b1233",不是"a12".

    import re
    reg = r"b\d+"
    m = re.search(reg, "a12b1233cd")
    print(m)
    
    • 1
    • 2
    • 3
    • 4

    4.字符"*“重复前面一个匹配字符零次或者多次.
    “” 与 "+"类似,但有区别,列如:
    可见 r"ab+“匹配的是"ab”,但是r"ab “匹配的是"a”,因为表示"b"可以重复零次,但是”+“却要求"b"重复一次以上.

    import re
    reg = r"ab+"
    m = re.search(reg, "acabc")
    print(m)
    reg = r"ab*"
    m = re.search(reg, "acabc")
    print(m)
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7

    5.字符"?"重复前面一个匹配字符零次或者一次.
    匹配结果"ab”,重复b一次.

    import re
    reg = r"ab?"
    m = re.search(reg, "abbcabc")
    print(m)
    
    • 1
    • 2
    • 3
    • 4

    6.字符".“代表任何一个字符,但是没有特别声明时不代表字符”\n".
    结果“.”代表了字符"x".

    import re
    s = "xaxby"
    m = re.search(r"x.y", s)
    print(m)
    
    • 1
    • 2
    • 3
    • 4

    7."|"代表把左右分成两个部分 .
    结果匹配"ab"或者"ba"都可以.

    import re
    s = "xaabababy"
    m = re.search(r"ab|ba", s)
    print(m)
    
    • 1
    • 2
    • 3
    • 4

    8.特殊字符使用反斜杠"“引导,例如”\r"、“\n”、“\t”、""分别表示回车、换行、制表符号与反斜线自己本身.

    import re
    reg = r"a\nb"
    m = re.search(reg, "ca\nbcaba")
    print(m)
    
    
    • 1
    • 2
    • 3
    • 4
    • 5

    9.字符"\b"表示单词结尾,单词结尾包括各种空白字符或者字符串结尾.
    结果匹配"car",因为"car"后面是一个空格.

    import re
    reg = r"car\b"
    m = re.search(reg, "this car is black")
    print(m)
    
    • 1
    • 2
    • 3
    • 4

    10.“[]中的字符是任选择一个,如果字符ASCll码中连续的一组,那么可以使用”-"字符连接,例如[0-9]表示0-9的其中一个数字,
    [A-Z]表示A-Z的其中一个大写字符,[0-9A-z]表示0-9的其中一个数字或者A-z的其中一个大写字符.

    import
    reg = r"x[0-9]y"
    m = re.search(reg, "xyx2y")
    print(m)
    
    • 1
    • 2
    • 3
    • 4

    11."^"出现在[]的第一个字符位置,就代表取反,例如[ ^ab0-9]表示不是a、b,也不是0-9的数字.

    import re
    reg = r"x[^ab0-9]y"
    m = re.search(reg, "xayx2yxcy")
    print(m)
    
    • 1
    • 2
    • 3
    • 4

    12.“\s"匹配任何空白字符,等价”[\r\n\x20\t\f\v]"

    import re
    s = "la ba\tbxy"
    res = r"a\sb"
    m = re.search(res, s)
    print(m)
    
    • 1
    • 2
    • 3
    • 4
    • 5

    13.“\w"匹配包括下划线子内的单词字符,等价于”[a-zA-Z0-9]"

    import re
    s = "Python is easy"
    res = r"\w+"
    m = re.search(res, s)
    print(m)
    
    • 1
    • 2
    • 3
    • 4
    • 5

    14.“$“字符比配字符串的结尾位置
    匹配结果是最后一个"ab”,而不是第一个"ab”

    import re
    s = "abcab"
    res = r"ab$"
    m = re.search(res, s)
    print(m)
    
    • 1
    • 2
    • 3
    • 4
    • 5

    15.使用括号(…)可以把(…)看出一个整体,经常与"+“、”*“、”?“的连续使用,对(…)部分进行重复.
    结果匹配"abab”,"+“对"ab"进行了重复

    import re
    res = r"(ab)+"
    m = re.search(res, "ababcab")
    print(m)
    
    • 1
    • 2
    • 3
    • 4
  • 相关阅读:
    输出最大选修学分问题
    谈一个谈这几个月的收获
    J2EE从入门到入土06.XML配置文件的读取
    YOLOV8离谱报错
    C# 程序兼容同一个dll的不同版本
    面向对象编程三⼤特性 --封装、继承、多态
    【Vue + Koa 前后端分离项目实战5】使用开源框架==>快速搭建后台管理系统 -- part5 后端实现最新期刊列表管理【增删查改】
    mybatis -- 打印完整sql(带参数)
    创建一个SpringCloud项目
    Linux_API_系列-整体概览
  • 原文地址:https://blog.csdn.net/cxl0406/article/details/127790110