python--正则表达式-分组,贪婪模式,懒惰模式

分组:

                分组在正则表达式中充当二次筛选

                re.match(r"<[a-zA-Z]+.*>(.*)</[a-zA-Z]>", "<a>这个是百度的链接</a>")

                <re.Match object; span=(0, 15), match='<a>这个是百度的链接</a>'>

贪婪与懒惰模式: 

                        python中,默认采用贪婪匹配,

                        *

                        +

                        ?

                        {m, }

 

>>> re.match(r"1(3|4|5|)\d{9}","123456884948")
<re.Match object; span=(0, 10), match='1234568849'>
>>> re.match(r"1[456]\d{9}","123456884948")

>>> re.match(r"1[356]\d{9}", "13456789987")
<re.Match object; span=(0, 11), match='13456789987'>
>>>

>>> re.match(r"<[a-zA-Z]+.*>.*</[a-zA-Z]>", "<a>这个是百度的链接</a>")
<re.Match object; span=(0, 15), match='<a>这个是百度的链接</a>'>
>>>
>>>
>>> re.match(r"<[a-zA-Z]+.*>(.*)</[a-zA-Z]>", "<a>这个是百度的链接</a>")
<re.Match object; span=(0, 15), match='<a>这个是百度的链接</a>'>
>>>
>>>
>>> res = re.match(r"<[a-zA-Z]+.*>(.*)</[a-zA-Z]>", "<a>这个是百度的链接</a>")
>>> res
<re.Match object; span=(0, 15), match='<a>这个是百度的链接</a>'>
>>>
>>>
>>> res.group()
'<a>这个是百度的链接</a>'
>>> res.group(1)
'这个是百度的链接'
>>>
>>> res = re.match(r"<([a-zA-Z]+).*>(.*)</\1>", "<a>这个是百度的链接</a>")
>>> re.match(r"<([a-zA-Z]+).*>(.*)</\1>", "<a>这个是百度的链接</a>")
<re.Match object; span=(0, 15), match='<a>这个是百度的链接</a>'>
>>> res = re.match(r"<([a-zA-Z]+).*>(.*)</\1>", "<a>这个是百度的链接</a>")
>>> res.group()
'<a>这个是百度的链接</a>'
>>> res.group(1)
'a'
>>> res.group(2)
'这个是百度的链接'

>>> re.findall(r"<[a-zA-Z]+.*>(.*)</[a-zA-Z]>", "<a>这个是百度的链接</a>")
['这个是百度的链接']
>>>
>>>
>>>
>>> re.findall(r"<([a-zA-Z]+).*>(.*)</\1>", "<a>这个是百度的链接</a>")
[('a', '这个是百度的链接')]
>>> #findall直接返回分组后的结果
>>>
>>>
>>>
>>>
>>>
>>>
>>> res = """
... <div>这是div1中的内容</div>
... <div>这是div2中的内容</div>
... <div>这是div3中的内容</div>"""
>>>
>>> res
'\n<div>这是div1中的内容</div>\n<div>这是div2中的内容</div>\n<div>这是div3中的内容</div>'
>>>

>>> re.sub(r"\n|\t|\r", "", res)
'<div>这是div1中的内容</div><div>这是div2中的内容</div><div>这是div3中的内容</div>'
>>> res = re.sub(r"\n|\t|\r", "", res)
>>> res
'<div>这是div1中的内容</div><div>这是div2中的内容</div><div>这是div3中的内容</div>'
>>>
>>>
>>>
>>> re.findall(r"<div>(.*)</div>", res)
['这是div1中的内容</div><div>这是div2中的内容</div><div>这是div3中的内容']
>>> re.findall(r"<div>(.*?)</div>", res)
['这是div1中的内容', '这是div2中的内容', '这是div3中的内容']
>>>
>>>
>>>
>>> re.sub(r"</?[a-zA-Z]+>", "", res)
'这是div1中的内容这是div2中的内容这是div3中的内容'
>>>
>>>
>>> re.search(r"\d+", "我今年16岁,是一个花季少女,我静静的等着18岁")
<re.Match object; span=(3, 5), match='16'>
>>>

 

​​​​​​​

  • 10
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值