1. Match
从字符串起始位置开始匹配,两个参数(正则表达式,字符串)
- .*代表匹配前面的字符无限次
content = 'Hello 1234567 World_This is a Regex Demo'
# 通用匹配
result = re.match('^Hello.*Demo$', content)
print(result)
print(result.group())
print(result.span())
- 贪婪与非贪婪匹配
# 贪婪匹配结果.*尽可能多匹配
result = re.match('^He.*(\d+).*Demo$', content)
# print(result)
# print(result.group(1))
# 非贪婪匹配结果.*?尽可能少匹配
result = re.match('^He.*?(\d+).*Demo$', content)
print(result)
print(result.group(1))
-
匹配结果在结尾,选择贪婪匹配
result2 = re.match('http.*?comment/(.*)', cotent)
-
遇到换行符,加re.S
result = re.match('^He.*?(\d+).*Demo$', content, re.S)
-
转义匹配,加
result = re.match('\(百度\)www\.baidu\.com', content)
2. Search一个
返回第一个匹配的结果,配合(.*?)使用
3. Findall多个(常用)
results = re.findall('<li.*?href="(.*?)".*?singer="(.*?)">(.*?)</a>', html, re.S)
for result in results:
print(result)
print(result[0], result[1], result[2])
4. Sub
去掉一些复杂标签,配合findall使用
html = re.sub('<a.*?>|</a>', '', html)
5. Compile
将字符串编译成正则表达式对象,配合复用