导入模块
import re
常用函数
匹配开头满足条件的字符
ret=re.match("c","ccc")
print(ret.group())
ret=re.match("c","acc")
print(ret.group())
匹配满足条件的字符
ret=re.search("c","acb")
print(ret.group())
"""
re.match和re.search函数的区别在于:
re.match函数仅匹配字符串的开头,如果不满足条件则返回None;
re.search函数会匹配整个字符串
"""
分组
txt="book price is $9,pen price is $8."
ret=re.search(".+(\$\d+).+(\$\d+)",txt)
print(ret.group())
print(ret.group(1))
print(ret.group(2))
查找所有满足条件
ret=re.findall("abc","abc,abc,abc")
print(ret)
根据规则替换其他字符串
ret=re.sub("\d+?","n","123")
print(ret)
根据规则切割字符串
ret=re.split('\d+',"aaa11bbb33e")
print(ret)
提前编译正则表达式
r=re.compile("\d+\.?\d+")
ret=re.search(r,"book price is 10.32 yuan")
print(ret.group())
正则表达式添加注释
r = re.compile(
"""
\d+ # 整数
\.? # 小数点
\d+ # 小数
"""
, re.VERBOSE)
ret = re.search("""
\d+ # 整数
\.? # 小数点
\d+ # 小数
""", "book price is 10.32 yuan",re.VERBOSE)
基础语法
限定符
匹配1个或多个表达式
ret=re.match('q+',"qqqt")
匹配0个或多个表达式
ret=re.match('q*',"aqqqq")
匹配0个或1个表达式
ret=re.match('q?',"qqq")
匹配n个字符
ret=re.match('\d{3}',"123456")
匹配n-m个字符
ret=re.match('\d{1,3}',"123456")
元字符
匹配任一字符串
ret=re.match('q',"qwer")
匹配任意字符(’\n’除外)
ret=re.match('.+',"qwer\nt")
匹配任意的数字
ret=re.match('\d+',"13455erw")
匹配任意的非数字
ret=re.match('\D+',".!~132")
匹配空白字符(\n \t \r 空格)
ret=re.match('\s',"\n111")
print("$$$"+ret.group()+"$$$")
"""
return:
$$$
$$$
"""
匹配非空白字符
ret=re.match('\S+',"11")
匹配[a-z]和[A-Z]、数字和下划线(Python定义变量的规则)
ret=re.match('\w+',"azAK_\nt")
print(ret.group()+"$$$")
匹配除[a-z,A-Z,0-9,_ ]外的字符
ret=re.match('\W+',"\n\t123")
print("$$$"+ret.group()+"$$$")
"""
return:
$$$
$$$
"""
组合匹配
ret=re.match('[\da-z]+',"132skLI~")
取反匹配 | 行首字符 | 结尾字符
ret=re.match('[^\d]+',"abc~1")
ret=re.search("^abc","abcd")
ret=re.search("abc$","iiiabc")
ret=re.search("^$","")
匹配多个字符串或表达式
ret=re.search("ftp|http|https","https://edu.csdn.net/")
贪婪模式和非贪婪模式
html=html = '<div class="navigation"><li<ahref="https://pass">账号设置</a></li></div> '
ret=re.search("<.+>",html) [会将开头出现的<和结尾出现的>相互匹配]
print(ret.group())
ret=re.search("<.+?>",html) [匹配第一个出现的<第一个出现的>]
print(ret.group())
转义字符
Python中的转义字符
txt=r"This is \n"
正则表达式的转义字符
ret=re.findall("a\*+","bca* lkfa*")
原生字符串和正则表达式
ret=re.search("\\\\c","abc\c")
正则表达式的字符串解析规则:
- 先将字符串在Python语言层面中进行解析
- 将得到的结果再放到正则表达式层面中进行解析
\\\\c -->[Python语言层面] \\c -->[正则表达式层面] \c
笔记下载
https://download.csdn.net/download/weixin_45564816/85052061
|