D21_3.1匹配分组

Posted banbosuiyue

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了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)  #应该这样写

 

可以把有意义的字符变得无意义,还可以把无意义的字符变得有意义,用来转义字符
: 换行
. : 单纯的匹配一个点
"""
"""
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() 获取分组里面所有的内容

以上是关于D21_3.1匹配分组的主要内容,如果未能解决你的问题,请参考以下文章

分组匹配错误,django url dispatcher

徒手撸出一个类Flask微框架根据业务进行路由分组

4分组匹配

4分组匹配

JS正则表达式的分组匹配

廖雪峰Java9正则表达式-2正则表达式进阶-3分组匹配