\d 表示匹配所有的数字 \w 表示匹配数字,字母,下换线 \s 表示匹配所有的空白 \t 表示匹配制表符tab \n 表示匹配换行符\n 回车键 \D 表示匹配非数字 \W 表示匹配非数字,字母,下换线 \S 表示匹配非空白 . 除\n以外所有的 [] 匹配字符组中的字符 [^] 匹配除字符组中字符的所有字符 ^ 匹配字符串的开始 $ 匹配字符串的结尾 () 匹配括号内的表达式,也表示一个组 a|b 匹配字符或者字符b
? 重复零次或者一次 + 重复一次或更多次 * 重复零次或者多次 {n} 重复n次 {n,} 重复n次或更多次 {n,m} 重复n次或m次
# 贪婪匹配 - 在量词范围允许的情况下,尽量多的匹配内容 - . *x 表示匹配任意字符,任意次数,遇到最后一个x才停下来 # 非贪婪匹配 - . *?x 表示匹配任意字符,任意多次数,但是一旦遇到x就停下来
- 原本有特殊意义的字符,为了表达它本身的意义的时候,需要转义
- 有一些有特殊 意义的内容,放在字符组中,会取消它的特殊意义
- [().*+?] 所有的内容在字符组中会取消它的特殊意义
[a-c] -在字符组中表示范围,如果不希望它表示范围,需要转义,或者放在字符组的最前面\最后面
- fildall (正则,待匹配字符串flag):返回所有匹配项的
import re ret = re.findall("d+","19740ash93010uru") # 返回所有满足匹配条件的结果,放在列表里 print(ret) # [‘19740‘, ‘93010‘]
- search:返回一个变量,通过group取到的是一个匹配的项
ret = re.search(‘\d+‘,‘19740ash93010uru‘) if ret: print(ret.group()) # 函数会在字符串内查找模式匹配,只到找到第一个匹配然后返回一个包含匹配信息的对象,该对象可以
通过调用group()方法得到匹配的字符串,如果字符串没有匹配,则返回None。 # 19740
- finditer :返回一个迭代器,通过迭代器取到的是一个变量,通过group取值(节省空间)
代码待续
- macth:从头开始找第一个,其他和search一样
import re ret = re.match(‘a‘, ‘abc‘).group() # 同search,不过尽在字符串开始处进行匹配 print(ret) # ‘a‘ # 用户输入的内容匹配的时候,需要用户输入11位数手机号码,^手机号码$ match("手机号正则$","123eva456taibai") search("^手机号正则$","123eva456taibai")
- compile(正则):同一个正则表达式需要多次使用的时候提前编译来节省时间
代码待续
- split:通过正则表达式匹配的内容进行分割
import re ret = re.split("\d+","eva3egon4yuan") print(ret) # [‘eva‘, ‘egon‘, ‘yuan‘] ret = re.split("(\d+)",,"eva3egon4yuan") print(ret) # [‘eva‘, ‘3‘, ‘egon‘, ‘4‘, ‘yuan‘
在匹配部分加上()之后所切出的结果是不同的,没有 () 的没有保留所匹配的项,但是有 () 的却能够保留了匹配的项,这个在某些需要保留匹配部分的使用过程是非常重要的。
- sub:替换,通过正则表达式匹配的内容进行替换
import re ret = re.sub("\d+","H","aas123dfghj147") print(ret) # aasHdfghjH ret = re.sub("\d+","H",,"aas123dfghj147",1) # 替换一个 print(ret) # "aasHdfghj147
- subn 替换,在sub的基础上,返回一个元组,第一个内容是替换结果,第二个是替换次数
import re ret = re.subs("\d+","H",‘alex123wusir456‘) print(ret) # (‘alexHwusirH‘, 2)
原文:https://www.cnblogs.com/zangyue/p/12044575.html