• python正则表达式


    目录

    一,什么是正则表达式

    二,分清字符串和字符

    三,计算机中常见的字符

    四,re模块的match函数

    五,正则表达式的常用匹配符

    1,字面量匹配符

    2,.

    3,[]

    4,\w和\W

    5,\d和\D

    6,\s和\S

    六,正则表达式的限定符

    1,*,+,?

    2,限定符使用案例

    七,原生字符串(解决反斜杠\带来的烦恼)

    八,边界字符

    1,什么是边界?什么是边界字符?

    2,^限定符

    3,$限定符

    4,\b和\B

    5,^放在[]里面表示取反

    九,择一符号|

    十,分组

    1,使用\num引用分组

    2,给组取别名

    3,分组注意点

    十一,贪婪和非贪婪

    十二,re模块中的函数

    1,sub()&subn()方法

    2,compile()

    3,findall()

    4,match和search的区别

    5,finditer()

    6,spilt()


    一,什么是正则表达式

            正则表达式是一种匹配规则,专门用来匹配字符串。比如说QQ邮箱都具有特定的格式,都是以@qq.com结尾,假如现在我们在网上爬取了一大堆的QQ邮箱,就可以使用正则去提取所有的QQ邮箱,而不会把163邮箱提取出来。

            正则表达式本身就是一个字符串,如:正则表达式:'1[35789]\d\d\d\d\d\d\d\d\d'用来匹配国内的11位手机号码。

    二,分清字符串和字符

    三,计算机中常见的字符

            大写英文字母:A-Z;小写英文字母:a-z;数字:0-9;转义字符:\n,\t,\b等;特殊字符:!,@,#,_,<,>等。汉字字符:我,爱,你等。

    四,re模块的match函数

    五,正则表达式的常用匹配符

    1,字面量匹配符

            形如一般字符串的正则表达式就是字面量,如:"hello"就是表示去找在一个字符串中有没有hello这个字符。例子:"hello123"字符串使用match,正则表达式为字面量'hello',就会匹配到hello。

    2,.

            符号.可以代替除\n外的所有字符。他只能代表一个字符,而不能代表多个。

    1. import re
    2. print(re.match('.', string="1"))
    3. print(re.match('.', string="\n"))
    4. print(re.match('.', string="A"))
    5. print(re.match('.', string="a"))
    6. print(re.match('.', string="!"))
    7. print(re.match('.', string="我"))
    8. #
    9. # None
    10. #
    11. #
    12. #
    13. #

    3,[]

            表示匹配[]里面的元素。比如:'H[123456]'表示H1,H2,H3,H4,H5,H6等6种字符组合。常见的有:[A-Z]表示A-Z所有的大写字母;[a-z]表示a-z所有的小写字母;[0-9]表示0-0之间的数字;[A-Za-z0-9_]表示A-Z,a-z,0-9所有字符以及下划线;[^0-9]表示0-9之外的所有字符,^表示取反。

            同样的,[]只能代表一个字符,而不能代表多个字符。

    1. import re
    2. print(re.findall('H[123456]', string="H1,H2,H3,H4,H5,H6"))
    3. # ['H1', 'H2', 'H3', 'H4', 'H5', 'H6']

    4,\w和\W

            也就是:\w代表a-z,A-Z,0-9中的任意一个字符。\W表示a-z,A-Z,0-9之外的任意一个字符。注:\w与[A-Za-z0-9]等价。单个\w表示一个字符,两个\w\w表示两个字符,以此类推。

    1. import re
    2. print(re.match('\w', string="H1,H2,H3,H4,H5,H6"))
    3. #
    4. print(re.match('\W', string="@H1,H2,H3,H4,H5,H6"))
    5. #
    6. print(re.match('\w', string="@H1,H2,H3,H4,H5,H6"))
    7. # None

    5,\d和\D

    6,\s和\S

            空白字符指的是:无法显示的字符,比如:空格,\n,\t,\b,\r等。

    六,正则表达式的限定符

            限定的对象有:单个正则匹配符,字面字符。

    1,*,+,?

    2,限定符使用案例

    七,原生字符串(解决反斜杠\带来的烦恼)

            正则表达式本身就是一个字符串,里面假如带有\n,\\等字符时会被转义,但是我们就想要双斜杠\\而不是转义后的\,就可以使用原生字符串。python中,在字符串前面加上r就表示原生字符串。

    1. str1 = r"c:\\windows\\cmd"
    2. print(str1)
    3. # c:\\windows\\cmd

    八,边界字符

    1,什么是边界?什么是边界字符?

            下图蓝色框就是边界。也就是每个字符之间的空隙就是边界。最左边"与i之间也叫边界。t和r之间有一个空格,空格与t与r之间也叫边界。

            边界字符实际上也是限定符,他是一边界为位置进行限定。

    2,^限定符

    3,$限定符

    4,\b和\B

            \b说明一个间隙两边的字符至少有一个不是字符,也就是至少有一个字符,不能同时都是字符,比如"ab",ab之间存在间隙边界,但两边一个是a一个是b,所有"ab"不会被匹配到。

    5,^放在[]里面表示取反

            [^0-9]表示0-9之外的字符。

    九,择一符号|

            |表示同时写多个正则表达式去进行匹配。如:'aa|bb|cc'表示先拿aa去匹配再拿bb去匹配,最后拿cc去匹配。

    十,分组

            这里的分组指的是对匹配的结果进行分组,而分组的依据就是正则表达式里面的括号。如果不加括号,则不会分组(但是默认存在一个组)。

    1,使用\num引用分组

    2,给组取别名

    3,分组注意点

    十一,贪婪和非贪婪

            +,*,?,{m,n}表示对一个字符进行重复,他们都是尽可能的匹配到最多的字符,比如:'123456789',贪婪模式就是尽可能把9个数字都匹配到,那假如我们只需要匹配12345该怎么办?这个时候可以使用非贪婪模式。

    十二,re模块中的函数

    1,sub()&subn()方法

            sub函数和subn函数用于实现搜索和替换功能。这两个函数的功能几乎完全相同,都是将某个字符串中所有匹配正则表达式的部分替换成其他字符串。用来替换的部分可能是一个字符串,也可以是一个函数,该函数返回一个用来替换的字符串。sub函数返回替换后的结果,subn函数返回一个元组,元组的第1个元素是替换后的结果,第2个元素是替换的总数。语法格式如下:

    2,compile()

    3,findall()

    4,match和search的区别

    5,finditer()

    6,spilt()

  • 相关阅读:
    两表union 如何保证group by 字段唯一
    学习Maven Web 应用
    MATLAB中strjoin函数使用
    Tomcat安装使用与部署Web项目的三种方法
    「Verilog学习笔记」根据状态转移表实现时序电路
    商务部研究院信用所、启信宝联合发布《中国商务信用发展指数报告(2022)》
    深入体会线程状态的切换
    Hadoop入门(十二):集群时间同步
    Spring Cloud微服务治理框架深度解析
    Servlet小项目 | 基于纯Servlet手写一个单表的CRUD操作
  • 原文地址:https://blog.csdn.net/weixin_44992737/article/details/125878509