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)

regexpal で確認すると、私が望んでいたものと一致します。これを機能させるには、Python で何か特別なことをする必要がありますか?

アドバイスをありがとう。

4

2 に答える 2

1

ここでこれを試してください:

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

最初の 3 つをキャプチャ (グループ化) したい場合は、正規表現全体を括弧で囲む必要があります。

于 2012-07-06T17:45:16.350 に答える
0

試合全体が必要な場合は、.group(0)またはを使用することもできます.group()

于 2012-07-06T23:14:54.133 に答える