正则表达式

  1. 定义
    正则表达式:用来检索、替换符合某个模式的文本
  2. 元字符和普通字符(原子操作:什么字符表示什么含义)
```python
[abc]      :匹配a或b或c
 abc       :匹配abc
[a-z]      :匹配所有小写字母
[a-zA-Z]   :匹配所有字母
[0-9]或\d  :匹配所有数字
       \D  :匹配非数字字符
[a-zA-Z0-9]:匹配所有字母和数字
   .       :匹配  \n  \r以外任意字符
^[abc]     :匹配以a或b或c开头的字符串的是哪一个字母
[^abc]     :匹配除a、b、以外的其他字符(abc取反)
[abc]$     :匹配以a、b、c结尾的字符串的字母
# 表示字符数量的元字符
{n}        :表示前面的字符为n个
{n,}       :表示前面的字符至少有n个
{n,m}      :表示前面的字符有n-m个
 *         :表示前面的字符为任意个(可以是0)
 .*        :表示任意个任意字符
 ?        :当紧跟在其他限制符(*、+、{n}、{n,}、{n,m})之后,切换到非贪婪模式
 ()        :提取正则匹配到的内容
```
  1. 演示
    import re #导入正则表达式的库
    
    result = re.findall(r'[gol]', 'helloworld')
    result2 = re.findall(r'gol', 'helloworld')
    result3 = re.findall(r'[a-z]', 'helloworld')
    result4 = re.findall(r'[a-z]$', 'helloworld')
    
    # findall:发现所有的正则表达式
    # findall的参数:匹配的模式:r'模式'
    #                被匹配的字符串
    print(result)
    print(result2)
    print(result3)
    print(result4)
    
    # 正则表达式表示数量
    
    # {n}:表示前面的字符为n个
    # {n,}:表示前面的字符至少有n个
    # {n,m}:表示前面的字符有n-m个
    # *:表示前面的字符为任意个(可以是0)
    
    result = re.findall(r'\d{3,}', '123456helloworld')
    result2 = re.findall(r'\d{3,5}', '123456helloworld')
    result3 = re.findall(r'\d*', '123456helloworld')# 会匹配空字符
    print(result)  # 正则表达式默认贪婪匹配,在满足正则的前提下,尽可能多的匹配内容
    print(result2)
    print(result3)
    
    result = re.findall(r"1.*_", "1a@A_1c$B_")
    # 点表示任意字符,*表示任意个字符,.*表示任意个任意字符
    print(result) # 结果: ['1a@A_1c$B_'],贪婪模式,最大匹配
    # ? :当紧跟在其他限制符(*、+、{n}、{n,}、{n,m})之后,切换到非贪婪模式
    result2 = re.findall(r"1.*?_", "1a@A_1c$B_")  # ['1a@A_', '1c$B_']
    print(result2)
    # () :提取正则匹配到的内容
    result3 = re.findall(r"1(.*?)_", "1a@A_1c$B_")  # ['a@A', 'c$B']
    print(result3)
    
    # 手机号匹配
    result = re.findall(r'^1[3|5|7|8|9]\d{9}$', '18435681191')
    print(result)
    
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值