我在Python中有一个正则表达式匹配对象。我想得到它匹配的文字。假设模式为'1.3'
,搜索字符串为'abc123xyz'
,我想获得'123'
。我怎么能这样做?
我知道我可以使用match.string[match.start():match.end()]
,但我觉得这样的基本查询非常麻烦(在某些情况下会浪费)。
有更简单的方法吗?
答案 0 :(得分:7)
您可以简单地使用匹配对象的group
函数,例如:
match = re.search(r"1.3", "abc123xyz")
if match:
doSomethingWith(match.group(0))
获得整场比赛。 编辑,如同thg435指出,您也可以省略0
,只需致电match.group()
。
附加说明:如果您的模式包含括号,您甚至可以通过将1
,2
等传递给group()
来获取这些子匹配。
答案 1 :(得分:-1)
您需要将正则表达式放在“()”中才能获得该部分
>>> var = 'abc123xyz'
>>> exp = re.compile(".*(1.3).*")
>>> exp.match(var)
<_sre.SRE_Match object at 0x691738>
>>> exp.match(var).groups()
('123',)
>>> exp.match(var).group(0)
'abc123xyz'
>>> exp.match(var).group(1)
'123'
否则它不会返回任何内容:
>>> var = 'abc123xyz'
>>> exp = re.compile("1.3")
>>> print exp.match(var)
None