上海古都建筑设计集团,上海办公室装修设计公司,上海装修公司高质量的内容分享社区,上海装修公司我们不是内容生产者,我们只是上海办公室装修设计公司内容的搬运工平台

017 正则表达式

guduadmin463月前

文章目录

    • 元字符使用
      • 匹配1个
      • 匹配字符重复
      • 匹配字符串开始位置
      • 匹配字符串的结束位置
      • 匹配(非)单词的边界位置
      • 或关系
      • 特殊字符匹配
      • 贪婪模式和非贪婪模式
      • 正则表达式分组
      • 函数使用
      • 返回match对象
      • 正则表达式匹配原则

        定义

        文本的高级匹配模式,本质是由一系列字符和特殊符号构成的字串,这个字串即正则表达式

        原理

        通过普通字符和有特定含义的字符,来组成字符串,用以描述一定的字符串规则

        类别元字符
        匹配字符. […] [^…] \d \D \w \W \s \S
        匹配重复* + ? {n} {m,n}
        匹配位置^ $ \b \B
        其他| () \

        元字符使用

        匹配1个

        普通字符

        匹配规则: 每个普通字符匹配其对应的字符

        元字符: .

        匹配规则: 匹配除换行外的任意一个字符

        匹配字符集

        元字符: [字符集]

        匹配规则: 匹配字符集中的任意一个字符

        字符集内空格、区间、普通字符都可

        匹配字符集反集

        元字符:[^字符集]

        匹配规则:匹配除了字符集以外的任意一个字符

        匹配字符重复

        元字符: *

        匹配规则: 匹配前面的字符出现0次或多次

        元字符: +

        匹配规则: 匹配前面的字符出现1次或多次

        元字符: ?

        匹配规则: 匹配前面的字符出现0次或1次

        元字符: {n}

        匹配规则: 匹配前面的字符出现n次

        元字符: {m,n}

        匹配规则: 匹配前面的字符出现m-n次

        匹配任意(非)数字字符

        元字符: \d \D

        匹配规则: \d匹配任意数字字符,\D匹配任意非数字字符

        匹配任意(非)普通字符

        元字符: \w \W

        匹配规则: \w匹配普通字符,\W匹配非普通字符

        说明: 普通字符指数字,字母,下划线,utf-8字符

        匹配任意(非)空字符

        元字符: \s \S

        匹配规则: \s匹配空字符, \S匹配非空字符

        说明: 空字符指空格\r \n \t \v \f字符

        匹配字符串开始位置

        元字符: ^

        匹配规则: 匹配目标字符串的开头位置

        匹配字符串的结束位置

        元字符: $

        匹配规则:匹配目标字符串的结尾位置

        匹配(非)单词的边界位置

        元字符: \b \B

        匹配规则: \b表示单词边界,\B表示非单词边界

        说明: 单词边界指数字字母(汉字)下划线与其他字符的交界位置

        或关系

        元字符:|

        匹配规则:匹配|两侧任意的正则表达式即可

        特殊字符匹配

        如果匹配的目标字符串中包含正则表达式特殊字符,

        则在表达式中元字符就想表示其本身含义时就需要进行\处理

        特殊字符: . * + ? ^ $ [] () {} | \

        贪婪模式和非贪婪模式

        贪婪模式:默认情况下,匹配重复的元字符总是尽可能多的向后匹配内容。比如:* + ? {m,n}

        非贪婪模式:让匹配重复的元字符尽可能少的向后匹配内容

        正则表达式分组

        在正则表达式中,以()建立正则表达式的内部分组,子组是正则表达式的一部分,可以作为内部整体操作对象。

        作用:可以被作为整体操作,改变元字符的操作对象

        import re
        result = re.search('(ab)+',"ababab")
        print(result.group())
        print(result.span())
        

        捕获组

        捕获组本质也是一个子组,只不过拥有一个名称用以表达该子组的意义,这种有名称的子组即为捕获组

        格式:(?Ppattern)

        注意

        子组序列号一般从外到内,从左到右计数

        函数使用

        re.findall(pattern,string)

        功能: 根据正则表达式匹配目标字符串内容

        参数: pattern 正则表达式

        string 目标字符串

        返回值: 匹配到的内容列表,如果正则表达式有子组则只能获取到子组对应的内容

        re.split(pattern,string,max)

        功能: 使用正则表达式匹配内容,切割目标字符串

        参数: pattern 正则表达式

        string 目标字符串

        max 最多切割几部分

        返回值: 切割后的内容列表

        re.sub(pattern,replace,string,count)

        功能: 使用一个字符串替换正则表达式匹配到的内容

        参数: pattern 正则表达式

        replace 替换的字符串

        string 目标字符串

        count 最多替换几处,默认替换全部

        返回值:替换后的字符串

        返回match对象

        re.finditer(pattern,string)

        功能: 根据正则表达式匹配目标字符串内容

        参数: pattern 正则表达式

        string 目标字符串

        返回值: 匹配结果的迭代器

        re.search(pattern,string)

        功能: 匹配目标字符串第一个符合的内容

        参数: pattern 正则

        string 目标字符串

        返回值: 匹配内容match object

        re.match(pattern,string)

        功能:匹配某个目标字符串开始位置

        参数:pattern 正则

        string 目标字符串

        返回值:匹配内容match object

        正则表达式匹配原则

        1正确性,能够正确的匹配出目标字符串

        2排他性,除了目标字符串外尽可能少的匹配其他内容

        3全面性,尽可能考虑到目标字符串的所有情况,不遗漏

网友评论

搜索
最新文章
热门文章
热门标签
 
 周易八字  周易算命免费生辰八字  梦到被蛇咬是什么征兆 男性