16 正则表达式

01 认识正则表达式

1. 正则表达式的作用

正则表达式是一种可以让复杂的字符串问题变得简单的工具

  • 问题: 判断手机号是否合法
# 方法1
tel = '123456789'
if len(tel) != 11:
    print('不是合法的手机号')
else:
    for i in tel:
        if not i.isdigit():
            print('不是合法的手机号')
            break
    else:
        if tel[0] != '1':
            print('不是合法的手机号!')
        elif '3' <= tel[1] <= '9':
            print('是合法的手机号')
        else:
            print('不合法')

# 方法2: 使用正则表达式
from re import fullmatch
tel = '123456789'
print(fullmatch(r'1[3-9]\d{9}', tel) != None)
  • split
from re import split
str2 = '23+45-89-1928*233'
print(split(r'[+*-]', str2))      # ['23', '45', '89', '1928', '233']

2. fullmatch函数

  • 导入
from re import fullmatch
  • 语法:
fullmatch(正则表达式, 字符串)   #  判断字符串和正则表达式是否完全匹配(判断整个字符串是否符合正则表达式所描述的规则),如果不符合返回None
  • python提供正则表达式的方式: 直接将正则表达式作为一个字符串内容(正则需要使用引号引起来,而且引号前面一般需要加r)

02 正则表达式语法

写正则表达式都是通过正则符号来描述字符串规则

1. 匹配类符号 - 用来规定字符(用来描述对字符的要求)

1) 普通字符 - 除了特殊符号以外的符号都是普通字符(在正则中表示符号本身)

print(fullmatch(r'abc', 'abc'))
print(fullmatch(r'abc', 'abd'))   # 不匹配,None

2) 特殊符号

符号 作用
. 匹配任意一个字符
\d 匹配任意一个数字字符
\s 匹配任意一个空白字符
空白字符: ’ ‘、’\n’、‘\t’
\w 匹配任意一个数字、字母、下划线或者中文
\D \S \W \D - 匹配任意一个非数字字符
\S - 匹配任意一个非空白字符
\W - 匹配任意一个非数字、字母、下划线或者中文
[字符集] 匹配字符集中任意一个字符
用法1: 在[]中提供多个普通字符, 匹配多个字符中的任意一个
用法2: [字符1-字符2], 匹配字符1到字符2范围中的任意一个字符
[5-9] : 能匹配’5’,‘6’,‘7’,‘8’,‘9’
[a-z] : 匹配任意一个小写字母
[\u4e00-\u9fa5]: 匹配任意一个中文
[a-zA-Z] : 匹配任意一个字母
用法3: 在[]中包含\开头的特殊符号
[\da-z]: 匹配任意一个数字或者任意一个小写字母
[\da-zA-Z_\u4e00-\u9fa5] == \w
注意: 中括号中的减号只有在两个字符之间的时候才表示谁到谁
[^字符集] 匹配不在字符集中的任意一个字符
[^A-Z]:
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值