一、正则表达式
1、正则表达式:
使用不同模式表示各种字符。
2、正则表达式的语法:
可以使用不同的元字符和特殊序列来构建模式,以匹配、搜索和替换字符串中的文本。
3、作用:
用于匹配、搜索、替换字符串模式。
4、优势:
执行效率特别高。
5、缺点
可读性不强。
二、各种模式、元字符
①、r : 表示不用转义。
②、. : 表示任意字符。
③、\d : 匹配数字。
④、\D : 匹配非数字。
⑤、\s :匹配空白字符(空格、转义字符、换行字符)。
⑥、\S:匹配非空白字符。
⑦、\w:匹配数字、字母、下划线。
⑧、\W:匹配非数字、字母、下划线。
⑨、re.I: 忽略大小写。
⑩、re.M :忽略空白符。
⑪、\b :匹配空白符。匹配单词边界,即匹配单词的开头或结尾位置。例如,正则表达式 r'\bhello\b' 可以匹配单词 "hello"。
⑫、\B :匹配非空白符。
⑬、^ :匹配单词开头。
⑭、$:匹配单词结尾。
⑮、[abcdefg]:只能取其中一个。
⑯、[^abcdefg]:不能取其中的内容。
⑰、():分组。
⑱、[ | ]:或。
⑲、\1\2:取第几个分组中的内容,要和分组中的元素保持一致。
重复
①、* :出现0次以上。
②、+ :出现一次以上。
③、?:有一个或0个。
④、.* :默认贪婪模式,即尽可能多。
⑤、.*? :非贪婪模式,即尽可能少。
⑥、{n} :匹配n个。
⑦、{m, n} : 匹配m-n个。
⑧、.*?\b :匹配单词边界。
⑨、^……$ : 匹配边界。
三、re模块的常用方法
①、match : 从头开始匹配,匹配成功返回匹配的字符串,匹配失败返回None。
注意match对象使用group查看。
r = re.match(r".\w{8}", "#Hello_word", re.I)
print(type(r), r)
if r:
print(r.group())
# <class 're.Match'> <re.Match object; span=(0, 9), match='#Hello_wo'>
# #Hello_wo
②、findmatch : 从头匹配到结尾,返回的是match或空,匹配整个字符串。
r = re.fullmatch(r"\d