D21_3.1匹配分组
作者:互联网
# ### 正则表达式 => 匹配分组
# 把想要匹配的内容,用小圆括号包起来,表达分组,并且会优先显示(优先显示就是只显示它)
print(re.findall('(.*?)_good','wusir_good alex_good secret男_good'))
# ?: 取消括号优先显示的功能
print(re.findall('(?:.*?)_good','wusir_good alex_good secret男_good'))
# | 代表或 , a|b 匹配字符a 或者 匹配字符b . 把字符串长的写在前面,字符串短的写在后面
strvar = "abcpiopipoabcd234"
lst = re.findall("abc|abcd",strvar) #只去匹配abc去了,没有匹配到abcd
lst = re.findall("abcd|abc",strvar) #应该这样写
\ 可以把有意义的字符变得无意义,还可以把无意义的字符变得有意义,用来转义字符
\n : 换行
\. : 单纯的匹配一个点
"""
"""
5.6
\d\.\d
39.56
\d+\.\d+
# 匹配小数和整数
lst = re.findall(r"\d+\.\d+|\d+",strvar)
print(lst)
# 使用分组合并正则 匹配小数和整数
lst = re.findall(r"\d+(?:\.\d+)?",strvar)
print(lst)
"""前面是\d+数字,后面是.数字,然后?代表取1个或者不取,贪婪模式有就取"""
# 匹配www.baidu.com 或者 www.oldboy.com
strvar = "www.oldboy.com www.baidu.com"
lst = re.findall(r"(?:www)\.(?:baidu|oldboy)\.(?:com)",strvar)
# search
"""
findall 匹配所有内容,缺陷:不能把匹配到的内容和分组里面的内容同时显示出来,返回的是列表
search 匹配到一个内容就直接返回,优点:可以把分组的内容,和实际匹配到的内容分开,同时显示,返回的是对象obj
obj.group() 获取匹配到的内容
obj.groups() 获取分组里面所有的内容
标签:good,匹配,D21,re,lst,分组,3.1,strvar,findall 来源: https://www.cnblogs.com/banbosuiyue/p/11827303.html