标签:逗号 world groups net 多次 cas 分组 html 匹配
# 正则匹配
import re
s = '111111111111111111'
# 1. findall
res = re.findall(r'1{2,5}', s) # 注意{2,5} ,逗号后面不能有空格, 即不能{2, 5}
print(res) # ['11111', '11111', '11111', '111'] # 默认是贪婪的,按最多的匹配
res2 = re.findall(r'1{2,5}?', s) # 在数量后面加上问号, 取消贪婪, 即会按照数量最少的匹配
print(res2) # ['11', '11', '11', '11', '11', '11', '11', '11', '11']
# 2. match
res3 = re.match(r'python', 'ipython')
print(res3) # None
# 3. search
res4 = re.search(r'python', 'ipython')
print(res4)
print(res4.group())
my_str = 'hello world hello python hh'
res = re.findall(r'\bhello\b', my_str) # 匹配单词边界
print(res)
# 正则分组
res = re.match(r'<h1>(.*)</h1>', '<h1>itcast匹配分组</h1>')
print(res)
print(res.group()) # 默认是传 0 即 res.group(0)
print(res.group(1)) # group(1) 表示正则匹配中出现的第一组括号中的内容
print(res.groups()) # 拿到全部的分组, 放到一个元组中
# s = '<html><h1>海马itcast</h1></html>'
# res = re.match(r'<.+><.+>.*</.+></.+>', s) # 引出引用分组, 因为这样, 前后的标签不相同也会匹配上
# print(res.group())
s = '<html><h1>海马itcast</h1></html>'
res = re.match(r'<(.+)><(.+)>.*</\2></\1>', s) # \2 引用第二个括号的内容, \1 引用第一个括号匹配到的内容
# print(res.group())
res = re.match(r'<(?P<key1>.+)><(?P<key2>.+).*</(?P=key2)></(?P=key1)>', s)
print('分组起名及引用: res{}'.format(res.group()))
# 匹配邮箱
# a-z A-Z 0-9 _ @163 126 gmail qq . com cn net
p = r'(\w+)@(163|126|gmail|qq)\.(com|cn|net)'
res = re.match(p, '1987719593@qq.com')
print(res)
标签:逗号 world groups net 多次 cas 分组 html 匹配
原文地址:https://www.cnblogs.com/nichengshishaonian/p/11525318.html