match、search、findall基本使用
import re
s = "1python cppjyh python python"
# match 从头开始匹配
result = re.match("python", s)
print(result)
# search 不要求一定从头开始匹配,返回从左往右第一个匹配到的结果
result = re.search("python", s)
print(result)
print(result.span())
print(result.group())
# findall 搜索全部匹配
result = re.findall("python", s)
print(result)
输出:
None
<re.Match object; span=(1, 7), match=‘python’>
(1, 7)
python
[‘python’, ‘python’, ‘python’]
正则表达式的元字符匹配
常用元字符规则如下:
例子
import re
# 例一:匹配账号,只能由字母和数字组成,长度限制6到10位
# ^&表示从头到尾要完整匹配
r = '^[0-9a-zA-Z]{6,10}$'
s = '123456_'
print(re.findall(r, s))
# 例二:匹配账号,要求纯数字,长度5-11位,第一位不为0
r = '^[1-9][0-9]{4,10}$'
s = '7913319702'
print(re.findall(r, s))
# 例三:匹配邮箱地址,只允许qq、163、gmail这三种邮箱地址
# 格式如: {内容}.{内容}.{内容}.{内容}@{内容}.{内容}.{内容}.{内容}
r = r'(^[\w-]+(\.[\w-]+)*@(qq|163|gmail)(\.[\w-]+)+$)'
# [\w-]+ 代表匹配单词字符加上- 可以出现1次至无数次
s = 'a.bsd.sk.w.ww@qq.com.wmd.ww'
print(re.match(r, s))