python之路:正则表达式

正则表达式:

        是一个字符序列,它能帮助你方便的检查一个字符串是否与某种模式匹配,

它的设计思想是用一种描述性的语言来给字符串定义一个滚则,凡是符合规则的字符串,我们就认为它“匹配了”,否则,该字符串就是“不合法的”。


在python中使用正则表达式导入,import re 模块


re的匹配语法有以下几种:

        1、re.match  从头开始匹配

        2、re.search  匹配包含

        3、re.findall  把所有匹配到的字符放到以列表中的元素返回

        4、re.split 以匹配到的字符当做列表分隔符

        5、re.sub 匹配字符串替换

        6、re.fullmacth 全部匹配


re模块常用表达式的规则

        “. ”:默认匹配除\n以外的任意一个字符,若指定 flags DOTALL,则匹配任意字符,包括换行。

       “^”:匹配字符开头,若指定 flags MULTLINE,这种也可以匹配上(r"^a","\nabc\neee",flags = re.MULTLINE)

        “$”:匹配字符结尾,若指定 flags MULTLINE,re.search('foo.$','foo1\nfoo2\n',re.MULTLINE).group()会匹配到foo1

        “*”:匹配*号前的字符0次或多次,re.search('a*','aaaabac')结果'aaaa'

        “+”:匹配前一个字符1次或多次,re.findall("ab+","ab+cd+abb+bba")结果['ab','abb']

        “?”:匹配前一个字符1次或0次,re.search('b?','alex').group()匹配b 0次

        “{m}”:匹配前一个字符m次,re.search('b{3}','alexbbbs').group()匹配到'bbb'

        “{n,m}”:匹配前一个字符n到m次,re.findall("ab{1,3}","abb abc abbcbbb")结果'abb','ab','abb'

        “|”:匹配|左或|右的字符,re.search("abc|ABC","ABCBabcCD").group()结果'ABC'

        “(...)”:分组匹配,re.search("(abc){2}a(123|45)","abcabca456c").group()结果为'abcabca45'

        “\A”:只从字符开头匹配,re.search("\Aabc","alexabc")是匹配不到的,相当于re.match('abc',"alexabc")或^

        “\Z”:匹配字符结尾,同$

        “\d”:匹配数字0-9

        “\D”:匹配非数字

        “\w”:匹配[A-Za-z0-9]

        “\W”:匹配非[A-Za-z0-9]

        “\s”:匹配空白字符、\t、\n、\r、,re.search("\s+","ab\tc1\n3").group()结果'\t'

  “(?P<name>...)”:分组匹配:re.search("(?P<province>[0-9]{4})(?P<city>[0-9]{2})(?P<birthday>[0-9]{4})","652322199103304014").groupdict("city")结果{'province':'6523','city':'22','birthday':'1991'}

             注:匹配模式有两种

                    1、贪婪匹配:正则表达式一般趋向于最大长度匹配,也就是所谓的贪婪匹配。

                    2、非贪婪匹配:就是匹配到结果就好,就少的匹配字符。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值