re 模块
re 模块:
Python的 re 模块实现了正则表达式处理的功能。
导入re模块后,使用findall、search函数可以进行匹配
查找:match和search
多个匹配上的,也只会返回第一个匹配上的
re.match():
需要特别注意的是,这个方法并不是完全匹配。它仅仅决定在字符串开始的位置是否匹配。所以当pattern结束时若还有剩余字符,仍然视为成功。想要完全匹配,可以在表达式末尾加上边界匹配符’$’
查找:finditer 和 findall 和 fullmatch
re.finditer()
下标从0开始
re.findall()
o\s+
:匹配o和后面的一个或多个空白字符
re.fullmatch()
h.*d
:h和d之间0或多个除\n之外的任意字符
分组: group()和groupdict()
group()
re.groupdict()
在匹配时使用“?P<>”,获得匹配结果后调用.groupdict()方法,获得字典类型的结果
替换:re.sub()
把字符串里的数字变成两倍:
生成一个正则表达式对象: re.compile()
正则表达式规则
# 1. 数字和字母都表示它本身
print(re.search(r'x', 'hello xyz')) # <re.Match object; span=(6, 7), match='x'>
print(re.search(r'5', '1a3b56c8d')) # <re.Match object; span=(4, 5), match='5'># 2. 很多字母前面添加 \ 会有特殊含义。
print(re.search(r'd', 'good')) # <re.Match object; span=(3, 4), match='d'>
print(re.search(r'\d', 'good')) # None
print(re.search(r'\d', 'go1234od')) # <re.Match object; span=(4, 5), match='1'># 3.大多数标点符号 都有特殊含义。如果想要使用标点符号,需要加 \ 。
print(re.search(r'+', '1+2=3')) # re.error:
print(re.search(r'\+', '1+2=3')) # <re.Match object; span=(1, 2), match='+'>
案例: 判断是否是数字
原始:
正则表达式:
案例:提取字符串中内容
案例:QQ判断
QQ号码
QQ用户名1
QQ用户名2
\w
:匹配字母数字下划线