Python:获取正则表达式匹配的文本

时间:2013-04-25 14:45:59

标签: python regex

我在Python中有一个正则表达式匹配对象。我想得到它匹配的文字。假设模式为'1.3',搜索字符串为'abc123xyz',我想获得'123'。我怎么能这样做?

我知道我可以使用match.string[match.start():match.end()],但我觉得这样的基本查询非常麻烦(在某些情况下会浪费)。

有更简单的方法吗?

2 个答案:

答案 0 :(得分:7)

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

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

获得整场比赛。 编辑,如同thg435指出,您也可以省略0,只需致电match.group()

附加说明:如果您的模式包含括号,您甚至可以通过将12等传递给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