2

この正規表現が機能しないのはなぜですか?

import re
i="<wx._controls.Button; proxy of <Swig Object of type 'wxButton *' at 0x2d040b0> >"
m = re.match("controls(.*)[;]", i)
if m:
    print m.group(1)

何も返しません。「コントロール」と「;」の間のすべてを取得しようとしています。このソリューションは他のテスト ケースでは機能しますが、このケースでは機能しません。

4

2 に答える 2

5

re.match文字列の先頭にのみ一致します。あなたがしたいre.search

ただし、reprオブジェクトの結果を評価してクラス名を取得しているようです。obj.__class__.__name__代わりに使用しないのはなぜですか?ダックタイピングを使用して、個々のクラスに固有のコードを避けます。

于 2012-05-26T18:21:05.577 に答える
4

.match()最初から見える。あなたがしたい.search()

于 2012-05-26T18:20:31.740 に答える