2017-05-26 12 views
0

私はバッシュgrepコマンドでそれを行うと私はHEXは(#ceff80などのような)色を埋める取得するためにSVGファイルの一部を解析するgrep -eが動作しているのに、私のPython 3.5 re.match()がNoneを返すのはなぜですか?

をしようとしている:

を次のように

grep -o -e "fill:#[a-f, 0-9]*;" Sample.svg 

結果があります

fill:#000000; 
fill:#ff0000; 
fill:#ff9955; 
fill:#ff9955; 
fill:#ffffff; 
fill:#ff0000; 
fill:#800080; 
fill:#666666; 
fill:#666666; 
fill:#00ff00; 

しかし、私は、Pythonのreモジュールでそれをしようとしたとき、私はNoneを得る:

import re 
color = re.match(r'fill:#[a-f, 0-9]*;', style) 

これは、ElementTreeを使用してXML構造を歩き回るループ内で呼び出されます。

font-style:normal;font-weight:normal;font-size:40px;line-height:125%;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;display:inline;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;filter:url(#filter5107) 

私は塗りつぶし抽出したい:style文字列は、このような値が含まれている#XXXXXXを。次に処理するために[6:-1]範囲式で切り捨てます。

何らかの理由により、常にNoneタイプのオブジェクトが返されます。

私は間違っていますか?

答えて

1

re.match()の代わりにre.search()を使用してください。

re.match()は、文字列がRegExpと完全に一致するかどうかをチェックするだけなので、最初に予期しないものがあれば失敗します。

関連する問題