ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

Re正则表达式

2020-07-03 18:04:31  阅读:162  来源: 互联网

标签:匹配 re 正则表达式 res ret Re print group


e模块与正则表达式之间的关系

  1.正则表达式是一门独立的技术,任何语言都可以使用

  2.python中需要使用re模块才能使用正则

  正则是用来筛选字符串中特定的内容,  只要是reg...一般情况都和正则有关

字符组 [ ]

  一个字符串里面的表达式都是或的关系,  正则:[0-9a-fA-F],  可以匹配数字,大小写形式的a~f,用来验证十六进制字符,  ^与$符连用 会精准限制匹配的内容,匹配内容应与两者之间的内容一致

abc|ab 一定要将长的放在前面

 

^ 直接写在外面 限制字符串的开头
[^] 除了[]里写的字符 其他都要

正则在匹配的时候默认都是贪婪匹配(尽量匹配多的),通过在量词后面加上一个?就可以将贪婪匹配变成非贪婪匹配(惰性匹配)

 

量词必须跟在正则符号的后面,量词只能能够限制紧挨着它的那一个正则符号

分组:当多个正则符号需要重复多次的时候或者当做一个整体进行其他操作,那么可以分组的形式分组在正则的语法中就是()

import re
res = re.findall('[a-z]+','eva egon,jason')  # findall('正则表达式','带匹配的字符串')
print(res)  # ['eva', 'egon', 'jason']
# 将符合正则表达式的内容以列表的形式返回
import re
res = re.search('a','eva egon jason')  # search不会直接返回匹配的结果,而是返回一个对象
print(res.group())  # a   必须调用group才能看到匹配结果
# 1.search只会依据正则查一次 只要查到了结果 就不会再往后查找
  2.当查找的结果不存在的情况下 调用group直接报错
import re
res = re.match('e','eva egon jason')
print(res)
print(res.group())  #e
# 1.match只会匹配字符串的开头部分
  2.当字符串的开头不符合匹配规则的情况下 返回的也是None 调用group也会报错
import re
ret = re.split('[ab]','abcd')  # 先按'a'分割得到''和'bcd',在对''和'bcd'分别按'b'分割
print(ret)  # ['', '', 'cd']
import re
ret = re.sub('\d','H','1a3b4cd',2)  # 将数字替换成'H',参数2表示只替换2个
# sub('正则表达式','新的内容','待替换的字符串',n)
print(ret)   #HaHb4cd
import re
ret = re.subn('\d','H','1a3b4cd',2)  # 将数字替换成'H',返回元组(替换的结果,替换了多少次)
print(ret)  # ('HaHb4cd', 2)
复制代码
import re
obj = re.compile('\d{3}')  #将正则表达式编译成为一个 正则表达式对象,规则要匹配的是3个数字
ret = obj.search('abc123eeee') #正则表达式对象调用search,参数为待匹配的字符串
res1 = obj.findall('347982734729349827384')
print(ret.group())  #结果 : 123
print(res1)  #结果 : ['347', '982', '734', '729', '349', '
复制代码
import re
ret = re.finditer('\d', 'ds3sy4784a')   #finditer返回一个存放匹配结果的迭代器
print(next(ret).group())  # 等价于ret.__next__())   3
print([i.group() for i in ret])  #查看剩余的左右结果 ['4', '7', '8', '4']
import re
res = re.search('^[1-9](?P<password>\d{14})(?P<username>\d{2}[0-9x])?$','110105199812067023')
print(res.group())  # 110105199812067023
print(res.group('password'))  #10105199812067
print(res.group(1))  #10105199812067
import re
ret1 = re.findall('www.(baidu|oldboy).com', 'www.oldboy.com')
ret2 = re.findall('www.(?:baidu|oldboy).com', 'www.oldboy.com')  # 忽略分组优先的机制
print(ret1,ret2)  #  ['oldboy'] ['www.oldboy.com']       ['oldboy']这是因为findall会优先把匹配结果组里内容返回,如果想要匹配结果,取消权限即可
import re
ret=re.split("\d+","eva3egon4yuan")
print(ret) #结果 : ['eva', 'egon', 'yuan']
ret1=re.split("(\d+)","eva3egon4yuan")
print(ret1) #结果 : ['eva', '3', 'egon', '4', 'yuan']

标签:匹配,re,正则表达式,res,ret,Re,print,group
来源: https://www.cnblogs.com/chunfenggangwan/p/13231780.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有