Pythonはわからないですが、
マッチしないところでは、途中にスペースが入っているので、\Sでは表現できません。
おそらくXXXXというところには:がないと推測されるので、
(?P<field>.+):(?P<value>\b\d{1,3}(,\d{3})*\b)
でうまくいかないでしょうか。
正規表現で 何を検索しようとしているのかわかりませんが
正規表現の記述の仕方は 間違っているようですね。
?や*の前後にそれを定義する文字が見当たらないようです。
▽3
●
a-kuma3 ●100ポイント ベストアンサー |
正規表現は、質問の範囲では正しいと思います。
match メソッドは、行の先頭から正規表現に相当するかどうかを調べる、というのが期待した動作をしない原因だと思います。
http://www.python.jp/doc/2.6/library/re.html#search-vs-match
7.2.6.4. search() vs. match()(原文)
簡単に言えば、 match() は文字列の先頭でのみパターンにマッチしようとします。対して、 search() は文字列のどこででもパターンにマッチしようとします。例えば :>>> re.match("o", "dog") # "o" は文字列 "dog" の最初の文字ではないのでマッチしません >>> re.search("o", "dog") # search() では、文字列のどこであってもマッチする <_sre.SRE_Match object at ...>
match メソッドの代わりに、search メソッドを使うと、期待した動作をすると思います。