栏目分类:
子分类:
返回
文库吧用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
文库吧 > IT > 软件开发 > 后端开发 > Python

正则表达式

Python 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

正则表达式

正则表达式
    • 正则表达式
      • 1.认识正则表达式
      • 2.导入re模块中的常用函数
      • 3.符号的用法
      • 4.转义字符的用法
      • 5.re模块的常用函数
      • 6.代码示例

正则表达式 1.认识正则表达式

1.什么是正则表达式

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

正则并不是Python特有的语法(不属于Python),所有的高级语言都支持正则,正则的语法通用

不管通过正则表达式解决的是什么问题,写正则的时候都是咋子使用正则表达式描述字符串规则。

2.Python的re模块

re模块时Python用来支持正则表达式的一个模块,模块中包含了所有和正则相关的函数

fullmatch(正则表达式,字符串) - 判断正则表达式好指定的自负歘是否完全匹配(判断整个字符串是否符合正则表达式所描述的规则);如果匹配成功返回匹配对象,失败返回None

2.导入re模块中的常用函数
from re import fullmatch, findall
3.符号的用法
字符功能
.匹配任意字符
^开头、在[]中表示非
$以某个字符结尾
*匹配任意次数个的字符
+匹配1次或多次个的字符
?匹配0次或者1次个的字符
[]表示匹配方括号中任意的一个字符
{M,N}匹配M次到N次的字符
()表示分组
4.转义字符的用法
转义字符功能
d表示一个数字类型的字符
D表示一个非数字类型的字符
s表示一个空白类型的字符
S表示一个非空白类型的字符
b表示单词边界
B表示非单词边界
w表示任意的字母数字字符,相当于[a-zA-Z0-9]
W表示非字母数字字符
5.re模块的常用函数
函数功能
fullmatch()完全匹配,匹配失败则返回None
match()匹配开头字符,匹配失败返回None
search()匹配第一个能够和正则符合的子串,找不到则返回None
findakk()返回的是满足所有条件的子串(用列表包装)
finditer()返回的是满足条件的所有子串(用迭代器包装)
split()返回的是满足切割条件进行切割的子串
sub(正则,字符串1,字符串2)字符串2中满足正则的内容替换成字符串1,并返回
6.代码示例
# 基本用法
result = fullmatch(r'a[MNd]b', 'aNb')
# 
result1 = fullmatch(r'a[^MNd]b', 'aBb')
# 
result2 = fullmatch(r'[1-9]d{4,11}', '1234567')
# 

# 分组
result3 = fullmatch(r'([A-Z]{3}d{2})[u4e00-u9fa5][A-Z]{3}', 'SDF55哈SDF')
result4 = fullmatch(r'(d{2})([a-z])[u4e00-u9fa5]{2}12', '55s哈哈55s')

# AttributeError: 'Match' object has no attribute 'match'
# 属性错误:'Match'对象没有属性'match'
result5 = fullmatch(r'([a-z])(d{3})[u4e00-u9fa5]{2}2', 's825哈哈825')
print(result5.span())
# (0, 9)

# 重复
message = '我今年18岁,月薪50088元,身高188,体重70公斤,8块腹肌。每年交308元的腾讯会员费。房贷每月3000元,车贷每月2288元。'
result6 = findall(r'd+元', message)
# ['50088元', '308元', '3000元', '2288元']

# 捕获
result7 = findall(r'(d+)元', message)
# ['50088', '308', '3000', '2288']

# 分支
result8 = findall(r'算([u4e00-u9fa5]|[u4e00-u9fa5]{2})求', '算什么求,算了,不算嘛求了')
# ['什么', '嘛']

# 转义
result9 = findall(r'\d+.d+', 'd.879')  # ['\d.879']
message1 = '12sadf456,asd史蒂夫54;sdf55;5adsf;asd;5 =8 55=sf '
result10 = findall(r'd+', message1)  # ['12', '456', '54', '55', '5', '5', '8', '55']
result11 = findall(r'd+b', message1)  # ['456', '54', '55', '5', '8', '55']
result12 = findall(r'bd+', message1)  # ['12', '5', '5', '8', '55']
result13 = findall(r'Bd+B', message1)  # ['2', '45', '5', '5']

# match()
result = match(r'd{3}', '546ashfjhas')
print(result)  # 

# search()
result = search(r'd{3}', 'asdf645asddd555asd')
print(result)  # 

# finditer()
result = finditer(r'd{3}', 'asdf645asddd555asd')
print(list(result))  # [, ]

# split()
str1 = '123JHSKkxc会计哈决胜巅峰JLSKD855JAD=='
# 将str1中的J和K作为切割点对字符串进行切割
result = split(r'J|K', str1)
print(result)  # ['123', 'HS', 'kxc会计哈决胜巅峰', 'LS', 'D855', 'AD==']

# sub()
result = sub(r'd', '+', '123JHSKkxc会计哈决胜巅峰JLSKD855JAD==') 
print(result)  # +++JHSKkxc会计哈决胜巅峰JLSKD+++JAD==

# group()
result = search(r'(d{3})([A-Z]{2})', '-=2设计师234KM222哈哈宿舍239KH')
print(result.group(1))      # '234'

# (?i)
result = fullmatch(r'(?i)abc', 'ABC') # 
print(result)

# (?s)
result =fullmatch(r'(?s)abc.123', 'abcn123')  # 
print(result)
转载请注明:文章转载自 www.wk8.com.cn
本文地址:https://www.wk8.com.cn/it/1038408.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 wk8.com.cn

ICP备案号:晋ICP备2021003244-6号