4
i="<wx._controls.Button; proxy of <Swig Object of type 'wxButton *' at 0x2887828> >]], [[[41, 183], 'Button', <wx._controls.Button; proxy of <Swig Object of type 'wxButton *' at 0x28879d0> >]]]"

m = re.findall("<wx.(.*)> >", i)

私にくれます

["<wx._controls.Button; proxy of <Swig Object of type 'wxButton *' at 0x2887828> >]], [[[41, 183], 'Button', <wx._controls.Button; proxy of <Swig Object of type 'wxButton *' at 0x28879d0> >"]

しかし、私はそれが私に与えて欲しい、

["<wx._controls.Button; proxy of <Swig Object of type 'wxButton *' at 0x2887828> >","<wx._controls.Button; proxy of <Swig Object of type 'wxButton *' at 0x28879d0> >"]

正規表現は最後まで検索しています。正規表現に一致するすべてのパーツを取り出したいのですが、誰かがこれに対する解決策を知っていますか?

4

1 に答える 1

7

演算子は*デフォルトで貪欲です。これは、後に追加することで変更できます?。また、リテラルドットを引用することを忘れないでください。

また、グループを一致させませんでした。そうしないと、目的の出力が得られません(これは、元のコードでも問題があるようです)。

re.findall(r"<wx\.(?:.*?)> >", i)

もう1つの可能性は次のとおりです(<最初の文字の前に正確に1つの文字が来ると仮定します)。これは、怠惰な演算子>を使用したバージョンよりも高速です。*

re.findall(r"<wx\.[^<]*<[^<]*> >", i)
于 2012-05-31T20:39:56.000 に答える