re学习(一)

# coding: utf-8
import re

'''
re.match()
re.search()
    返回的都是一个对象,obj.group()
re.findall()
    返回的是一个列表
re.compile()
re.sub()
'''
string = '<div>浪花淘尽英雄,是非成败转头空!</div></div></div>'
pattern = re.compile(r'<div>.*?</div>')
print(pattern)  # re.compile('<div>.*?</div>')
print(type(pattern))  # <class '_sre.SRE_Pattern'>
ret = pattern.search(string)
# print(ret)
print(ret.group())  # <div>浪花淘尽英雄,是非成败转头空!</div>
'''
compile()的定义:
compile(pattern, flags=0) 
Compile a regular expression pattern, returning a pattern object.
从compile()函数的定义中,可以看出返回的是一个匹配对象,
它单独使用就没有任何意义,需要和findall(), search(), match()搭配使用。

compile()与findall()一起使用,返回一个列表。

compile()与match()一起使用,可返回一个class、str、tuple。
但是一定需要注意match(),从位置0开始匹配,匹配不到会返回None,
/group属性了,并且与group使用,返回一个单词‘Hello’后匹配就会结束。

compile()与search()搭配使用, 返回的类型与match()差不多, 
但是不同的是search(), 可以不从位置0开始匹配。
但是匹配一个单词之后,匹配和match()一样,匹配就会结束。

'''
# coding: utf-8
import re

# 不区分大小写
string = 'love'
pattern = re.compile(r"LOVE", re.I)
ret = pattern.search(string)
# print(ret)  # None
print(ret.group())  # love
# coding: utf-8
import re

# 视为单行模式
string = '''<div>
香山一日游
白马不等留
十年不轻忘
莫在多年后
叹当时年少
</div>'''
pattern = re.compile(r'<div>.*?</div>', re.S)  # 不加re.S会匹配不到数据,报错

ret = pattern.search(string)
print(ret.group())  # 匹配所有内容,一行

# coding: utf-8
import re

# 视为多行模式
string = '''这些都是以爱开头的歌名
爱情鸟
爱情买卖
爱上一个不回家的人
爱我别走
爱的供养
爱是一道光
'''
pattern = re.compile(r"^爱", re.M)
ret = pattern.findall(string)
print(ret)  # 返回列表   内容“爱”

# coding: utf-8
import re

string = '''<div>
<ul>
    <li><a href='www.yan.com'>柳岩</a></li>
    <li><a href='www.guafu.com'>黑寡妇</a></li>
    <li><a href='www.yuan.com'>高圆圆</a></li>
    <li><a href='www.zhen.com'>田震</a></li>
</ul>
</div>'''

pattern = re.compile(r"<a href='(.*?)'>(.*?)</a>")
# pattern = re.compile(r"<a href='(.*?)'>(.*?)</a>")
ret = pattern.findall(string)
print(ret)

# [('www.yan.com', '柳岩'), ('www.guafu.com', '黑寡妇'), ('www.yuan.com', '高圆圆'), ('www.zhen.com', '田震')]

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值