1

我很困惑为什么这个 Python 正则表达式没有给我预期的结果。在下面的示例中,我希望输出为“/w:document/w:body/w:sectPr”,但实际结果(Python v3.2)是“/w:sectPr”。我为以下示例简化了我的问题。

import re

path = "/w:document/w:body/w:sectPr/w:footerReference"
rxSetting = re.compile('(/\w+:[^/]+){3}')   # top-three
matchSetting = rxSetting.match(path)
setting = matchSetting.group(1)
print(setting)

当我用正则表达式检查它时,它符合我想要的。我需要在 Python 中做一些特定的事情来完成这项工作吗?

感谢您的任何建议。

4

2 回答 2

1

在这里试试这个:

rxSetting = re.compile('((?:/\w+:[^/]+){3})')

如果要捕获(分组)前三个,则需要整个正则表达式周围的括号。

于 2012-07-06T17:45:16.350 回答
0

如果你想要整场比赛,你也可以使用.group(0).group()

于 2012-07-06T23:14:54.133 回答