这里是:
import re
>>>s = 'abc -j k -l m'
>>>m = re.search('-\w+ \w+', s)
>>>m.groups()
()
>>> m.group(0)
'-j k'
为什么groups()
什么也没有给我,但是group(0)
产生了一些?有什么区别?
跟进
代码如下
>>>re.findall('(-\w+ \w+)', s)
['-j k', '-l m', '-n o']
findall
可以得到所有的-\w+ \w+
子字符串,但是请看这个:
>>>m = re.search('(-\w+ \w+)+', s)
>>>m.groups()
('-j k',)
为什么不能search
给我所有的子字符串?
再次跟进
如果s = 'abc -j k -l m -k o
,并且
>>>m = re.search(r'(-\w+ \w+ )+', s)
>>>m.groups()
('-l m ',) # why just one substring?
>>>m.group(0)
'-j k -l m ' # as I expected
groups()
只返回正则表达式中任何显式捕获的组(在正则表达式中用(
圆括号)
表示),而group(0)
返回与正则表达式匹配的整个子字符串,而不管表达式是否有任何捕获组。正则表达式中的第一个显式捕获由
group(1)
表示。后续编辑:
search()
将只返回与输入字符串中的模式的第一个匹配。regex没有匹配组,由parens(
(...)
)表示。让我举个小例子来解释
解释:
groups()
是一个元组类型,它具有与正则表达式模式匹配的所有值。groups(0)
或groups()
或groups(1)
。。。。它只打印所有值group()或group(0)->;它将给出整个字符串以及与正则表达式匹配的模式值。
组(1)将给出第一个模式匹配值
组(2)将给出第二个模式匹配值。。。。
相关问题 更多 >
编程相关推荐