RE模块,Python模块_re正则表达式模块-2

 2023-09-28 阅读 26 评论 0

摘要:re模块之转义字符 print(re.findall("I\b","I am a Man")) #匹配不到结果 print(re.findall(r"I\b","I am a Man")) #加字符串前加r的意思是对于特殊字符不作处理的交给re去处理 print(re.findall("I\\\k","I\k am a Man"))

re模块之转义字符

print(re.findall("I\b","I am a Man")) #匹配不到结果
print(re.findall(r"I\b","I am a Man")) #加字符串前加r的意思是对于特殊字符不作处理的交给re去处理
print(re.findall("I\\\k","I\k am a Man")) #k是没有特殊意义的, 而 \ 在re里是有特殊意义的,所以"I\k am a Man"中的\k其实是\\k
print(re.findall(r"I\\k","I\k am a Man")) #已知re里的 I\k字符 是 I\\k .加r对特殊字符不作处理的交给re去处理

 

re模块之 | (或)

print(re.findall("AB|CD","AAAAAABBBBBBBBBBCCCCCCCCDDDDDD")) #把符合AB和符合CD条件的拿出来,结果是:['AB', 'CD']
print(re.findall("(abc)+","abcabcabc")) #这个结果是:['abc'] ,如何解读?
print(re.findall("(abc)+","abcXabcXabc")) #这个结果是:['abc', 'abc', 'abc'] ,如何解读?
print(re.findall("www.(baidu|163)\.com","www.163.com")) #结果是 ['163'],有 |(或) 会匹配分组条件的内容
print(re.findall("www.(baidu|163)\.com","www.baidu.com")) #结果是 ['baidu']
print(re.findall("www.(?:baidu|163)\.com","www.baidu.com")) #结果是:['www.baidu.com']

 

re模块之search方法

RE模块,search和findall的区别是:search是最小匹配,findall是贪婪匹配

print(re.search("ABC","123456ABC")) #结果返回是一个对象:<re.Match object; span=(6, 9), match='ABC'>
print(re.search("ABC","123456ABC").group()) #对象的group()方法的结果返回的是一个字符串:ABC
print(re.search("(?P<num>[0-9])[A-Z]+","123ABC456JJJ").group())# 结果是:3ABC
print(re.search("(?P<num>[0-9])[A-Z]+","123ABC456JJJ").group("num")) #结果是:3 ,符合预期

 

re模块之split方法 (分割)

print(re.split("[34]","A3B4CDE3FG4H3")) #结果是:['A', 'B', 'CDE', 'FG', 'H', ''],最后为什么是 空,因为3的前面已经算是被4分了,后面也没东西了,所以是 空
print(re.split("[34]","A34CDE3FG4H3")) #结果是:['A', '', 'CDE', 'FG', 'H', ''],第二个匹配结果为什么是 空,因为 3的后面是4,4也是分割条件一个,所以3后面没东西了,就空了,强行解释?

 

re模块之sub,subn方法 (相当于replace替换)

print(re.sub("\d","AK47","12345")) #结果是:AK47AK47AK47AK47AK47,,有5个ak47,意思就是每匹配到符合要求的单个字符,就会替换
print(re.sub("\d+","AK47","12www1")) #结果是:AK47wwwAK47,有2个AK47,因为12算符合\d+ 的第一个条件,所以算一个替换结果
print(re.sub("\d+","AK47","12www1",1)) #结果是:AK47www1 ,最后一个没去替换,应该我最后一个参数1,表示只替换一次符合要求的结果
print(re.subn("\d","AK47","12www321")) #结果是:元组('AK47AK47wwwAK47AK47AK47', 5),5的意思是符合条件的有5个

re模块的作用。 

re模块之compile方法

no_num = re.compile("\D+")  # 先把规则编译到一个对象
result11 = no_num.sub("---","ABC123ABC")
print(result11)

 

re模块之finditer方法

iter_ret = re.finditer("\d","1234567812345678123456781234567812345678") #当处理的数据量很大的时候,就要用到迭代器,以免内存撑爆了
print(next(iter_ret).group())
print(next(iter_ret).group())
print(next(iter_ret).group())

 

正则表达式匹配,转载于:https://www.cnblogs.com/iamjames/p/11261607.html

版权声明:本站所有资料均为网友推荐收集整理而来,仅供学习和研究交流使用。

原文链接:https://hbdhgg.com/1/101928.html

发表评论:

本站为非赢利网站,部分文章来源或改编自互联网及其他公众平台,主要目的在于分享信息,版权归原作者所有,内容仅供读者参考,如有侵权请联系我们删除!

Copyright © 2022 匯編語言學習筆記 Inc. 保留所有权利。

底部版权信息