Python学习

Python | group()和groups()的区别

2019-02-19  本文已影响0人  Quora文选

2019年02月18日 21:32:31

标签:python、正则表达式

匹配对象方法 描述
group(num=0) 匹配的整个表达式的字符串,group() 可以一次输入多个组号,在这种情况下它将返回一个包含那些组所对应值的元组。
groups() 返回一个包含所有小组字符串的元组,从 1 到 所含的小组号。

group用法:
一个小括号()表示一个分组,超出分组号则会报错

>>> import re
>>> a="123abc456"

>>> print(re.search('([0-9]*)([a-z]*)([0-9]*)', a).group(0))
123abc456
>>> print(re.search('([0-9]*)([a-z]*)([0-9]*)', a).group())
123abc456
>>> print(re.search('([0-9]*)([a-z]*)([0-9]*)', a).group(1))
123
>>> print(re.search('([0-9]*)([a-z]*)([0-9]*)', a).group(2))
abc
>>> print(re.search('([0-9]*)([a-z]*)([0-9]*)', a).group(3))
456

groups用法:

>>> import re
>>> a="123abc456"

>>> print(re.search('([0-9])([a-z]*)([0-9]*)', a).groups())
('1', '', '23')

>>> print(re.search('([0-9]*)([a-z]*)([0-9]*)', a).groups())
('123', 'abc', '456')

[]只能匹配其中的某1个字符!!
[]*为多字符匹配

>>> import re
>>> a="123abc456"

>>> print(re.search('([0-9])*([a-z]*)([0-9]*)', a))
<re.Match object; span=(0, 9), match='123abc456'>
>>> print(re.search('([0-9])*([a-z]*)([0-9]*)', a).groups())
('3', 'abc', '456')

>>> print(re.search('([0-9])*([a-z])*([0-9]*)', a))
<re.Match object; span=(0, 9), match='123abc456'>
>>> print(re.search('([0-9])*([a-z])*([0-9]*)', a).groups())
('3', 'c', '456')

match到的字符串均为123abc456,查找的时候先不考虑(),根据查找的结果分配()所对应的。
([a-z]*) : 第2组括号内匹配多个a-z的字母组合,即为abc
([a-z])* : 第2组括号内为单个字母,出现多次,即为a匹配一次→b匹配一次→c匹配一次,取最后匹配出来的值,即为c,我的理解类似堆栈,不知道是否准确。

re.search : 扫描整个字符串并返回第一个成功的匹配,这个第一个指的是字符串最靠前的匹配。

其他:

>>> import re
>>> a="123abc456"

>>> print(re.search('[0-9]*([a-z]*)([0-9]*)', a).groups())
('abc', '456')

>>> print(re.search('[0-9]*([a-z]*)([0-9]*)', a))
<re.Match object; span=(0, 9), match='123abc456'>

>>> print(re.search('[0-9]([a-z]*)([0-9]*)', a))
<re.Match object; span=(0, 3), match='123'>

参考资料:
https://www.cnblogs.com/zengguowang/p/7779699.html
https://www.cnblogs.com/cute/p/9186208.html
https://www.cnblogs.com/zyy98877/p/8482371.html
http://www.runoob.com/python3/python3-reg-expressions.html
http://f.dataguru.cn/thread-212244-1-1.html

上一篇下一篇

猜你喜欢

热点阅读