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() 获取分组里面所有的内容

上一篇:[Python]正则匹配字符串 | 蒲公英二维码图片url


下一篇:php-Yii findAll()无法正常工作