2017-05-23 6 views
-1

こんにちはI次の文字列を持っている:Pythonと正規表現は、文字列のシーケンスを見つけることができません

t = '<td align="right" class="ofGridLinesTop" headers="amount" sortvalue="2633.33" valign="top">\n\t\t\t\t\t \n\t\t\t\t\t \n\t\t\t\t\t \n\t\t\t\t\t\t$2,633.33\n\t\t\t\t\t \n\t\t\t\t\t \n\t\t\t\t\t</td>' 

私は、次の正規表現のシーケンスが正しく、私がしたい文字列の一部を識別することを知っている(sortvalue =「2633.33」)

Amt = re.findall('\bsortvalue=.\b\d+.\d+.',t) 

私が空に出てくる:

\bsortvalue=.\b\d+.\d+. 

は、しかし、私は、次のステートメントを使用する場合。どんな考え?

+0

'R '\ bsortvalue = "(\ dは+ \ \ D +。)"''代わりにしてみてください。 –

+0

この正規表現 ''(sortvalue)(=)("。*? ")''はどうですか? –

答えて

1

使用この:

Amt = re.findall('\\bsortvalue=.\\b\d+.\d+.',t) 

またはこの:

Amt = re.findall(r'\bsortvalue=.\b\d+.\d+.',t) 

も参照this question

+0

正解ですが説明する必要があります。 '\ b'などでバックスラッシュをエスケープしていないので、意図したものではなくエスケープコードを実際に代用しています(つまり、\ bはバックスペースです)。修正するには、バックスラッシュ、つまり '\\ b'をエスケープするか、本質的に文字列リテラルであるHorcruxの2番目の例のように、正規表現に' r 'を接頭辞として付けることによって生の文字列を作成することができます。 – Dillanm

関連する問題