7

我在 Python 中有一个正则表达式匹配对象。我想得到它匹配的文本。说如果模式是'1.3',搜索字符串是'abc123xyz',我想得到'123'。我怎样才能做到这一点?

我知道我可以使用match.string[match.start():match.end()],但我发现对于这样一个基本查询来说这非常麻烦(并且在某些情况下是浪费的)。

有没有更简单的方法?

4

2 回答 2

7

您可以简单地使用匹配对象的group功能,例如:

match = re.search(r"1.3", "abc123xyz")
if match:
    doSomethingWith(match.group(0))

获得整场比赛。编辑:正如 thg435 指出的那样,您也可以省略0and just call match.group()

附加说明:如果您的模式包含括号,您甚至可以通过将 等传递给 来获取这些子1匹配2group()

于 2013-04-25T14:48:31.060 回答
-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
于 2013-04-25T14:58:13.503 回答