6

Pythonで非キャプチャグループに名前を付けることは可能ですか? たとえば、このパターン (引用符を含む) で文字列を一致させたいとします。

「a=b」「鳥=天使」

私は次のことができます:

s = '"bird=angel"'
myre = re.compile(r'(?P<quote>[\'"])(\w+)=(\w+)(?P=quote)')
m = myre.search(s)
m.groups()
# ('"', 'bird', 'angel')

結果は引用グループをキャプチャしますが、これはここでは望ましくありません。

4

2 に答える 2

10

いいえ、名前付きグループは常にキャプチャ グループです。reモジュールのドキュメントから:

通常、拡張機能は新しいグループを作成しません。(?P<name>...)このルールの唯一の例外です。

また、名前付きグループの拡張子については次のとおりです。

通常の括弧に似ていますが、グループによって一致した部分文字列は、シンボリック グループ名 name を介して正規表現の残りの部分からアクセスできます

とは対照的に、 は を意味しregular parenthesesます。(...)(?:...)

于 2013-05-09T22:37:08.220 に答える