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

python中 正则的使用符号以及使用方法详解

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

python中 正则的使用符号以及使用方法详解

正则:需要使用re模块。
正则表达式:一个特殊的字符序列,可以检查一个字符串是否与某种模式匹配。
元字符:
.:匹配任意字符
^:匹配的开始位置 $:匹配的结束位置
*:匹配0到多次 +:匹配1到多次
?:匹配0次或1次 d:匹配一个数字,等同于[0-9]
D:匹配非数字 等同于[^0-9]
s:匹配任意空白字符[tnrfv]
S:匹配非空白字符 w:匹配英文或数字
W:匹配非英文非数字
|:或 {}:指定匹配的次数:{4}
常用函数:
# match():从字符串第一个字符开始匹配一个模式,匹配成功返回一个匹配对象,否则返回None
# search(): 扫描整个字符串匹配一个模式,匹配成功返回一个匹配对象,否则返回None
# group():返回被匹配的字符串,结合match和group使用
# compile():编译正则表达式
#findall():在字符串中查找符合模式的字符串,返回列表
#sub():替换符合一定模式的字符串
#split():按照一定模式分隔字符串
import re

str1 = ‘sddf3gwrw’
r = re.match(‘d’,str1) #匹配单个数字
print®

r = re.search(‘d’,str1)
print®
print(r.group())

str1 = ‘sddf3g889wrw’
r = re.match(‘d+’,str1)
print®
str1 = ‘sddf3999g889wrw’
r = re.search(‘d+’,str1) # 匹配连续多个数字
print®
str1 = ‘sddf3g889wrw’
r = re.match(‘d*’,str1) #匹配0个或者多个连续数字,没有匹配到数字,返回空字符串""
print®
str1 = ‘sddf3g889wrw’
r = re.search(‘d{2}’,str1) # 匹配2个数字
print®

str1 = ‘sddf3g88967wrw’
r = re.search(‘d{2,4}’,str1) # 匹配2-4个数字
print®

str1 = ‘sddf3g88967wrw’
r = re.search(‘d{2}|d{4}’,str1) # 匹配2个或4个数字
print®
str1 = ‘sddf3g88967wrw’
r = re.search(‘D{2}|d{4}’,str1) # 匹配2个非数字或4个数字
print®

str1 = ‘sddf3g88967wrw’
r = re.search(‘[a-z]{2}|d{4}’,str1) # 匹配2个小写字母或4个数字
print®
str1 = ‘sddf3g88967wrw’
r = re.search(‘[0-9]{2}|d{4}’,str1) # 匹配2个数字或4个数字
print®
str1 = ‘37sddf3g88967wrw’
r = re.search(‘1+’,str1) # 从字符串起始位置匹配1个或多个数字,即字符串以数字开头
print®

str1 = ‘37sddf3g88967wrw’
r = re.search(‘[^0-9]+’,str1) # 匹配1个或多个非数字,[^0-9]表示非数字
print®
str1 = ‘37sddf3g88967wrw9’
r = re.search(‘[0-9]+$’,str1) # 匹配字符串最后1个或多个非数字,即字符串以1个或多个数字结尾
print®
str1 = ‘37s ddf3g88967wrw9’
r = re.search(‘s’,str1) # 匹配换行符、tab符、空格等空白字符
print®

使用正则表达式判断字符串是否IP地址

ip = ‘192.168.99.99’
zhengze = ‘^((25[0-5]|2[0-4][0-9]|[01]?[0-9]?[0-9]).){3}(25[0-5]|2[0-4][0-9]|[01]?[0-9]?[0-9])$’
r = re.match(zhengze,ip)
print®

str1 = ‘37sddfPYthon67wrw9’
r = re.compile(‘[Pp][Yy]thon’) # 匹配Python或python
s = r.search(str1)
print(s)

findall(),查找字符串中符合正则的字符串,返回列表

str1 = ‘37sddfPYthon-67wrw9’
n_list = re.findall(‘d+’,str1)
print(n_list)

str1 = ‘37sddfPYthon-67wrw9’
n_list = re.findall(‘d+|-d+’,str1) #查找正数或负数
print(n_list)

str1 = ‘37sd**dfPYth&&on-67wKaTeX parse error: Undefined control sequence: W at position 27: … = re.findall('̲W̲+',str1) #查找非数字…rw9’
n_list = re.findall(‘[pP]ython’,str1) #匹配不到字符串返回空列表
print(n_list)

str1 = ‘37sd**dfPYth&&on-67w$$rw9’
new_str = re.sub(‘W+’,“”,str1) #将非数字非英文替换为空
print(new_str)

str1 = ‘sdfwe23df23568swg’
new_str = re.sub(‘d+’,‘***’,str1)
print(new_str)

#split(),按照正则表达式分隔字符串
str1 = ‘sd;fwe:,re.tr’
s_list = re.split(‘[;:.,]+’,str1)
print(s_list)

s_list = re.split(‘W+’,str1)
print(s_list)

s_list = re.split(‘[^a-z]+’,str1)
print(s_list)

str1 = ‘sd;fwe:,re.tr’
s_list = re.findall(‘[^;:.,]+’,str1)
print(s_list)

重点正则表达式: (.+?),可以提取两个字符串之间的字符串

str1 = ‘sdfglweeryrtlyuru’
s_list = re.findall(‘gl(.+?)r’,str1) # 提取str1字符串中 gl和ry之间的字符串
print(s_list)

str1 = ‘sdfglweeryrtlyuru’
s_list = re.findall(‘gl(.+)’,str1) # 提取str1字符串中 gl后面所有字符
print(s_list)
str1 = ‘sdfglweeryrtlyuru’
s_list = re.findall(‘(.+)ly’,str1) # 提取str1字符串中 ly之前所有字符
print(s_list)


  1. 0-9 ↩︎

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/839919.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

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