分组:
分组在正则表达式中充当二次筛选
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'>
>>>