Python正则表达式

Python正则表达式

正则表达式

  1. 正则表达式是使用一系列特殊符号从字符串中匹配内容。
  2. 正则表达式是独立于所有语言的语法,所有语言中正则表达式的语法是相同的,只是使用方法不一样

**fullmatch(正则表达式,字符串):**判断字符串是否完全符号正则表达式的规则,成立返回一个对象,不成立返回None

匹配类符号

  • 通配符:.

    可以匹配任意符号

    import re
    
    re_str = 'a.b'
    str1 = 'acb'
    res = re.fullmatch(re_str,str1)
    print(res)
    
  • 数字符:

    **\d :**匹配0-9数字
    **\D :**匹配非数字

    re_str = 'a\d\dc'
    str2 = 'a12c'
    res1 = re.fullmatch(re_str,str2)
    print(res1)
    
  • 普通符号:

    在正则表达式中没有特殊含义的符号

    re_str = 'abcd'
    str3 = 'abcd'
    print(re.fullmatch(re_str, str3))
    
  • 空白符:

    **\s :**匹配空白符号(空格,\n,\t等)
    **\S :**匹配非空白符号

    re_str = 'a\sb'
    str4 = 'a b'
    print(re.fullmatch(re_str,str4))
    
  • **\w:**匹配数字、字母、下划线、(中文、朝鲜语)

  • 字符集:

    [字符集] - 从 [ ] 的字符集中匹配一个符号

    规则:- 链接的是范围,其左边必须小于右边,不能出现在开头或结尾

    常见的字符集:

    **[a-z],[A-Z],[0-9]:**表示匹配其中任意一个字母或数字

    **[\u4e00-\u9fa5]:**匹配任意一个汉字

    **[a-zA-Z]:**匹配任意一个字母

    [^字符集]:匹配不在字符集中的元素

    字符集规则不变,^只能放在字符集的开头

重复

重复符号

  • **?:**匹配0或1次

    import re
    
    re_str = 'a\d?'
    str1 = 'a'
    print(re.fullmatch(re_str,str1))
    
  • **+:**匹配一次或多次

    str2 = 'c32c4v41b3g2'
    re_str = '[0-9]+'
    print(re.findall(re_str,str2))
    
  • ***:**匹配任意次

  • **{M,N}:**至少匹配M次,最多匹配N次

  • **{N}:**匹配N次

  • **{N,}:**最少匹配N次

  • **{,N}:**最多匹配N次

贪婪和非贪婪

**贪婪:**所有次数不确定的匹配都是贪婪的(一次性匹配更多的元素)
如:+ , * , {,N} , {M,}

**非贪婪:**一次匹配取最短长度的结果(在贪婪涉及的符号基础上添加一个 ? 即可
如:+? , *? , {,N}?

str3 = 'zxczxczxc'
re_str = 'z.+c'
print(re.findall(re_str, str3))
re_str = 'z.+?c'
print(re.findall(re_str, str3))

分组和分支

分支:|

等同于or,表示或者

import re

str1 = 'zxvvxz'
re_str = '[a-z]{3}'
print(re.findall(re_str,str1))

re_str = 'zxv|vxz'
print(re.findall(re_str,str1))

分组:()

  1. 能够将同类项提出来
  2. 能够将分组中的结果重复
str2 = 'zxczxv'
re_str = '(zx(c|v))'
print(re.findall(re_str,str2))

**\n:**可以将第n个分组的结果重复

str3 = '123==123123'
re_str = r'(\d{3})(=)\2\1\1'
print(re.fullmatch(re_str,str3))

正则表达式不是转义字符,在写正则表达式时,在正则表达式前面添加r或者R

正则表达式方法

fullmatch/findall/split/sub/search/match

  • **fullmatch:**查看整个字符串是否符合正则表达式(不常用)

  • **findall:**1.将字符串中所有符合正则表达式的规则的结果匹配出来
    2.如果正则表达式中出现分组,会先安装正则表达式匹配结果,再将符合分组中正则表达式的结果提取出来

  • **split:**按照正则表达式的规则切割字符串

  • **sub:**将符合正则表达式的字符串替换为新的字符串

  • **search:**查找字符串中第一个符合正则表达式的结果(不常用)

  • **match:**查看字符串的开头是否符合正则表达式(不常用)

import re
str1 = 'a,b,c'
re_str = 'a'
print(re.match(re_str, str1))
re_str = '[a-z]'
print(re.search(re_str,str1))
re_str = ','
print(re.split(re_str,str1))
# re.sub(正则,newStr,oldStr)
print(re.sub('[,]','',str1))
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值