2017-02-02 11 views
1

私は長い間文字列から価格を削除しようとしていますが、誰かのために正規表現を見つけることができません。価格を見つけるための正規表現

$txt = `<br class='clear'/> <div style='float:left;width:100px;'> 02 Dorm.<br /> A partir de: </div><div class='info' style='color:#E50000; font-weight:normal;'> 
<font style='font-size:16px;'>R$ 505.726,23</font><div style='font-size:10px;line-height:10px'>*Venda sob consulta (Ref. Apto 103 Box 01)</div></div><br class=clear><br class='clear'/> <div style='float:left;width:100px;'> 03 Dorm.<br /> A partir de: </div><div class='info' style='color:#E50000; font-weight:normal;'><font style='font-size:16px;'>R$ 639.898,49</font><div style='font-size:10px;line-height:10px'>*Venda sob consulta (Ref. Apto 104 Box 02)</div></div><br class=clear><br class='clear'/><div style='float:left;width:100px;' class='normal'> Vagas:</div><div class='info' > <i class='fa fa-car'></i> &nbsp;1</div>` 

は、私が欲しいだけ639.898,49

+0

どのような言語/環境ですか?何を試しましたか? –

+0

言語はPHPです: \ d {1,3}(?:[。、] \ d {3})*(?:[。、] \ d {2})では動作しません。 – Rafael

+0

「639.898,49」を選択する基準は「505.726,23」ではない? – Toto

答えて

2

この(使用して正の後読み)試してみてください。

(?<=R\$).*?(?=<\/font>)

+0

ここでテストすることができます:https://regex101.com/r/4ILB9s/1 –

+0

ありがとう、仕事! – Rafael

+0

私はpreg_matchまたはpreg_match_allを使用する必要がありますか? – Rafael

0

あなたが試みることができるもう一つのパターンは次のとおりです。

R\$ ([\d.,]+)<\/ 

必要な情報をキャプチャ中ですグループ1

このパターンは、結果を得るのに22 stepsしかかかりません。それはlookbehindsを使用するよりはるかに効率的です。

https://regex101.com/r/4xw5ME/1

関連する問題