正则表达式总结

正则表达式

(1)模式

        ^ 匹配字符串开头

        $ 匹配字符串结尾

        . 匹配除\n外的任意字符

        [a-z0-9] 匹配a到z或0-9任意一个字符

        [^abc] 不匹配括号里的内容

        ( )分组

        re* 匹配0个或无限次前面的表达式

        re+ 匹配1次或无限次前面表达式

        re? 匹配0次或者1次前面的表达式

        {n, m} 匹配n次到m次前面表达式

        {n} 匹配n次前面表达式

        {n, } 匹配n次到无限次前面表达式

        a | b 匹配a或者b

        \w 匹配字母数字下划线,中文

        \d 匹配数字,等价于[0-9]

        \s 匹配任意空白字符,等价于[\n\t\f\r]

        \W 匹配非字母数字下划线或中文,大写字母表示小写字母取反

        \1..\9 匹配分组

        \10 匹配第n个分组的内容,如果它经匹配。否则指的是八进制字符码的表达式

(2)方法( re.func(pattern,str) 或者 pattern.func(str) )

    re.match(pattern,str) 从开头匹配返回group()对象,匹配失败返回None,用group()来显示匹配内容

    re.search() 搜索所有的字符串,返回group()对象

    re.sub(pattern, repl, str) 其中repl为替换的内容,也就是用pattern匹配str中内容,替换成repl。举例:

str5 = '0813-8102-537 # 这是我家座机'
# 删除后面的注释
print(re.sub(' #.*$', '', str5))
# 删除数字中间-
print(re.sub('\D', '', str5))

结果是:
0813-8102-537
08138102537

    再举个经典的例子,

str6 = "13320247938"  # 将中间四个数字替换成****
pattern = re.compile('^(1[3578]\d)(\d{4})(\d{4})$')
ss = pattern.sub(r'\1****\3', str6)
print(ss)

结果为
133****7938

    re.findall()返回匹配到的所有字符串列表可以, 只返回加了正则模式里面加了括号的部分

str1 = '2005-9-2 上午11:04'
rex = r"(\d{2}):\d{2}"     # 只取冒号前面的 '2005-9-2 上午11:04'
it = re.findall(rex, str1)

print(it)
print(re.search(rex,str1).group())

返回结果
['11']
11:04

    re.split()按照匹配的字符串进行分割,返回一个列表

下面是一些补充的正则模式

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值