2012-07-06 36 views
1

我很難理解爲什麼這個Python正則表達式不會給我預期的結果。在下面的例子中,我期待輸出爲「/ w:document/w:body/w:sectPr」,但實際結果(Python v3.2)爲「/ w:sectPr」。我已經簡化了以下示例中的問題。Python正則表達式匹配結果太小,請告知

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中做什麼 特定的工作?

感謝您的任何建議。

回答

1

這裏試試這個:

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

如果你想捕捉(集團)前三,你需要圍繞整個正則表達式的括號。

+0

謝謝!現在我覺得我錯過了明顯的解決方案。 – Bargonaut 2012-07-06 17:48:53

+0

沒問題!如果您覺得它回答了您的問題,請給這個答案一張支票。 – danseery 2012-07-06 17:50:38

0

如果你想整場比賽,你也可以只用.group(0).group()