python正则表达式

1、 规则: 

\d:匹配一个数字字符。等价于[0-9]

\D:匹配一个非数字字符。等价于[^0-9]

\w:匹配包括下划线的任何单词字符。

\W:匹配任何非单词字符

*:匹配前面的子表达式任意次(包含0次)

        +:匹配前面的子表达式至少一个字符,

        ?:匹配前面的子表达式0 个或 1 个字符,

. : 匹配除“\r\n”之外的任何单个字符。要匹配包括“\r\n”在内的任何字符,请使用像“[\s\S]”的模式。

        用{n}表示 n 个字符,
        用{n,m}表示 n-m 个字符,
        [0-9a-zA-Z\_]可以匹配一个数字、字母或者下划线
        0-9a-zA-Z\_]+可以匹配至少由一个数字、字母或者下划线组成的字符串,比如'a100','0_Z','Py3000'等等
        [a-zA-Z\_][0-9a-zA-Z\_]*可以匹配由字母或下划线开头,后接任意个由一个数字、字母或者下划线组成的字符串,也就是 Python合法的变量
        [a-zA-Z\_][0-9a-zA-Z\_]{0, 19}更精确地限制了变量的长度是1-20个字符(前面 1 个字符+后面最多 19 个字符)
        A|B 可以匹配 A 或 B,所以[P|p]ython 可以匹配'Python'或者'python'。
        ^表示行的开头,^\d 表示必须以数字开头。

        $表示行的结束,\d$表示必须以数字结束。

  用\s 可以匹配一个空格(也包括 Tab 等空白符),所以\s+表示至少有一个空格,例如匹配'  ','  '等

        你可能注意到了,py 也可以匹配'python',但是加上^py$就变成了整行匹配,就只能匹配'py'了

        
2、使用

      import re

      2.1 match //匹配成功返回match对象,否则返回none
              test = '用户输入的字符串'
              if re.match(r'正则表达式',test):
                    print('ok')
             else:
                    print('fail')

            group
            g = 
re.match(r'正则表达式',test):
            g.group(0) //0 永远返回原始字符串
            g.group(1) 
            g.group(2)
            g.group(....)
            

    2.2 split 切割
               2.2.1 
               str = 'a b   c';
               普通切割: 
               rs =  str.split(' ') //['a','b','','','c'],无法识别b与c之间的多个连续空格
               正则切割
               rs = re.split(r'\s+','a b   c')//['a','b','c'] ,
无论多少个空格都可以正常分割

                2.2.2 加入空格、逗号、分号
               
 re.split(r'[\s\,]+', 'a,b, c d') //['a','b','c','d']
                re.split(r'')
                

       2.3 贪婪匹配
       re.match(r'^(\d+)(0*)',123400).groups() //('
123400 ',''),由于\d+采用贪婪模式,尽可能多匹配,把后面00也匹配了.结果0*就匹配不到了
       
re.match(r'^(\d+?)(0*)',123400).groups() //('1234','')加?采用非贪婪模式,前面就不能匹配到00  

        2.4编译
        
 re_telephone = re.compile(r'^(\d{3})-(\d{3,8})$') 
        re_telephone.match('010-12345').groups() //('010', '12345')
 
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值