首页 / 正则 / python-正则表达式
python-正则表达式
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了python-正则表达式,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含4521字,纯文字阅读大概需要7分钟。
内容图文
一、常用的匹配规则
# .的使用 匹配规则是除了换行符之外的字符
#coding:utf-8
import re
data='a123aaa'
names='李达','李明','小王','小李'
# parrtern = '...'
parrtern='李.' #匹配规则
for item in names:
res=re.match(parrtern, item)
if res:
print(res.group())
#[]中括号的使用,匹配规则是:匹配中括号中的任意一个字符
str1='Hello'
res=re.match('[he]',str1,re.I)
if res:
print(res.group())
#\d表示匹配一个数字 0-9
data1='123456789abcdefg'
res=re.match('\d*3',data1) #这边表示匹配3位数字
if res:
print(res.group())
# \D匹配一个非数字
data2='asdf123123'
res=re.match('\D',data2)
if res:
print(res.group())
# \s 匹配空白,即空格或tab键
data3=' 123435'
res=re.match('\s',data3)
if res:
print(res.group())
# \S匹配非空白的字符
data4='Python nice'
res=re.match('\S\S\S\S\S\S',data4)
if res:
print(res.group())
# \w 匹配单词字符 即a-z A-Z 0-9 _
data5='s_2sdf'
res=re.match('\w\w\w',data5)
if res:
print(res.group())
# \W 匹配非单词的字符
data6='@ sadf'
res=re.match('\W',data6)
if res:
print(res.group())
二、限定匹配字符数量的规则
# coding:utf-8
import re
# * 匹配前一个字符出现0次或者无限次,即可有可无
res=re.match('[A-Z][a-z]*','ANy') #第二个位置匹配了0次,因为第二个字符不满足小写
res1=re.match('[A-Z][a-z]*','Any') #第二个字符匹配成功,会继续匹配下去,所以匹配了两次
print(res.group())
print(res1.group())
# + 匹配前一个字符出现1次或者无限次,即至少有一次
res = re.match('[a-zA-Z]+','MYsdsfsgg')
print(res.group())
# 实操一下,符合标准的python变量名,不能以数字开头,变量只能包含数字、字母、下划线
pattern='[a-zA-Z_]\w+'
res=re.match(pattern,'_asdf123')
if res:
print(res.group())
else:
print('变量不符合规范')
# ?告诉引擎匹配前一个字符 0次或者1次,即表示前一个字符可选
res = re.match('[a-zA-Z]+[0-9]?','na8978asdf_e')
print(res.group())
# {min,max}告诉引擎匹配前一个字符min次到max次,其中min和max必须是非负整数
res=re.match('\d{4}','123456') #表示从头开始精确匹配四位数字,匹配结果是1234
if res:
print(res.group())
else:
print('匹配失败')
res=re.match('\d{4,}','123456') #表示从头开始精确匹配四位数字,后面只要是数字,就一直匹配下去匹配结果是123456
if res:
print(res.group())
else:
print('匹配失败')
res=re.match('\d{4,5}','123456') #表示从头开始最小匹配四位数字,最大匹配五位,匹配结果是12345
if res:
print(res.group())
else:
print('匹配失败')
# 加反斜杠\表示转义
# res=re.match('c:\\\\test.txt','c:\\test.txt')
res=re.match(r'c:\\test.txt','c:\\test.txt') # 正则前加个r可以简化转义
print(res.group())
# ^匹配字符串开头
res=re.match('^P.*','Python is language')
if res:
print(res.group())
else:
print('匹配失败')
# $匹配字符串末尾
res=re.match('\w*e$','Pythonislanguage')
if res:
print(res.group())
else:
print('匹配失败')
三、分组匹配
# coding:utf-8
# | 竖线 匹配左右任意一个表达式
import re
string='wadfasd1123'
res=re.match('(wadfasd|wadfasd1123)',string)
print(res.group())
# () 分组匹配 将括号中字符作为一个分组
res=re.match('(\d{4})-(\d*)','0513-1564648')
print(res.group())
print(res.group(1))
print(res.group(2))
# ^有两种含义 1:以xxx开头 2:否定,取反
res=re.match('([^-]*)-(\d*)','0513-1564648')
print(res.group())
#引用分组num匹配到的字符串
htmltag='<html><h1>测试数据</h1></html>'
res=re.match(r'<(.+)><(.+)>.+</\2></\1>',htmltag)
print(res.group())
#分组别名的使用 (?P<名字>)
#如何使用别名(?p=引用的名字)
data='<html><h1>测试数据</h1></html>'
res=re.match(r'<(?P<name1>\w*)><(?P<name2>\w*)>.*</(?P=name2)></(?P=name1)>',data)
print(res.group())
四、贪婪模式
#coding:utf-8
# 贪婪模式 默认的匹配规则都属于贪婪模式 也就是在满足条件的情况下,尽可能多的去匹配数据
import re
rs=re.match('\d{6,9}','12313245654')
print(rs.group())
#非贪婪模式,在满足条件的情况下,尽可能匹配少的数据
rs=re.match('\d{6,9}?','12313245654')
print(rs.group())
五、创建正则表达式对象
#coding:utf-8
import re
#compile re模块中的编译方法,可以把一个字符串编译成字节码
#优点:在使用正则表达式进行match操作时,python会将字符串转为正则表达式对象
reobj=re.compile('\d{4}')
#开始使用模式对象reobj
res=reobj.match('123465')
print(res.group())
#re.search 规则是在全文中匹配一次,匹配到就返回
data='我爱伟大的祖国,ilove great china'
rs=re.search('china',data)
print(rs.group())
#re.findall 查询字符串中某个正则表达式全部的非重复出现的情况,匹配返回一个列表
data='华为是华人的骄傲'
rs=re.findall('华.',data)
print(rs)
#re.sub 实现目标的搜索替换文本
data = 'Python is a popular language'
rs=re.sub('Python','Java',data)
print(rs)
#re.subn 实现目标的搜索替换文本 还返回被替换的数量 以元组的形式
data = 'Python is a popular language'
rs=re.subn('Python','Java',data)
print(rs)
# re.split() 实现分割字符串 返回结果是一个列表
data='百度,腾讯,阿里,华为,360'
rs=re.split(',',data)
print(rs)
print(type(rs))
内容总结
以上是互联网集市为您收集整理的python-正则表达式全部内容,希望文章能够帮你解决python-正则表达式所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。