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
将字符串编译成正则表达式对象,配合复用

posted on 2024-02-22 17:01  HelloJacker  阅读(7)  评论(0编辑  收藏  举报