2012-08-08 44 views
0

我有問題試圖從文本正則表達式匹配正確的文本

我想從下面的文字(這是字符串中的最後一個十進制數),提取14.50提取正確的值。

<span class="ob-pricedetails">Price:</span> &#036;57.71<span style="color: #666666; font-size: 12px;">(&#163;37.61)</span><br/><span style="font-size: 11px; color: #000000;">Shipping (UK):</span>&#036;14.50 

我一直在嘗試使用下面的正則表達式

正則表達式

(?<=Shipping \(UK\):<\/span>&#163;|&#036;)(.*) 

返回以下結果一些奇怪的原因

57.71<span style="color: #666666; font-size: 12px;">(&#163;37.61)</span><br/><span style="font-size: 11px; color: #000000;">Shipping (UK):</span>&#036;14.50 

我在做什麼錯?任何幫助,將不勝感激。

+0

爲什麼不使用JavaScript從DOM中提取值? – Don 2012-08-08 18:16:57

+0

貪婪。使用'。*?'或'/ U'標誌。更好的是讓比賽更具體。 – mario 2012-08-08 18:17:23

+0

@Blaine,因爲我颳了一個網站... – 2012-08-08 18:17:35

回答

2

這會工作:

preg_match('/Shipping \(UK\):<\/span>&#036;([0-9]+\.[0-9]+)/', $html, $matches); 

當然,你應該聽聽大家建議喲使用DOM解析器,而不是正則表達式。

1

這應該對你有用。

[0-9\.]+$