廖雪峰python学习笔记【17】正则表达式

1. 元字符:

    1.1 "\d" : 匹配一个数字。

    1.2 "\w" : 匹配一个数字或字符。

    1.3 "\s" : 匹配一个空格或tab等空白符。

    1.4 ". "  : 匹配任意一个字符。

    1.5 "*"  : 匹配任意个字符前面的字符(包括0个)。

    1.6 "+"  : 至少匹配一个前面的字符。

    1.7 "?"  : 匹配0个或1个前面的字符。

    1.8 "{n}" : 前面的字符连续匹配n次。

    1.9 "{n,m}" : 前面的字符连续匹配n至m次。

    1.10 [  ]表示范围匹配:

        1.10.1 [0-9a-zA-Z]: 表示匹配0-9或a-z或A-Z。

    1.11 ^: 匹配行的开头。

    1.12 $: 匹配行的结尾。

2. re模块

    2.1 转义:

        2.1.1 匹配1234-1234567的正则表达式可以用"123\-1234567"。"-"是特殊字符需要转义。

        2.1.2 表示正则表达式"123\-1234567"的python字符串是"123\\-1234567","\"本身也需要转义。因此python字符串最好使用"r"前缀,即:r'123\-1234567'表示python字符串。

3. 切分字符串

    3.1 'a b   c'.split(' ') == ['a', 'b', ' ', 'c'] # 字符串对象的split方法无法识别连续的空格。

    3.2 re.split(r'[\s]+',  'a b   c') == ['a', 'b', 'c'] #可以切分多个连续的空格。

4. 分组:

    4.1 正则表达式除了判断是否匹配外,还能提取子串。用()表示要提取的分组。

    4.2 示例:

            4.2.1 m = re.match(r'.*(\d{4}).*\-.*(\d{7}).*', 'a1234a-a1234567a')。

        4.2.2 Match对象m的group方法用来获取分组。m.group(0): 表示原始字符串;m.group(1) : 表示第一个分组;m.group(2) : 表示第二个分组。

            4.2.3 m.groups() # 返回一个存储有所有分组信息的tuple。

5. 贪婪匹配

    5.1 正则匹配默认是贪婪匹配。即匹配尽可能多的字符。

    5.2 示例:

        5.2.1 re.match(r'^(\d+)(0*)$', '102400').groups == ('102400', '')

        5.2.2 使用"?"后,可以改为非贪婪匹配:

        5.2.3 re.match(r'^(\d+?)(0*)$', '102400').groups == ('1024', '00')

6. 编译:

    6.1 使用re.match时,re模块做了两件事:

        6.1.1 编译正则表达式;

        6.1.2 用编译后的正则表达式匹配去匹配字符串;

    6.2 如果同一个正则表达式需要多次使用,则可以将正则表达式预编译好,提升效率。示例:

        6.2.1 re_tel = re.compile(r'^(\d{4})\-(\d{7})$')

        6.2.2 re_tel.match('1234-1234567').groups() == ('1234', '1234567')


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

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值