正则表达式匹配正确的文本

时间:2012-08-08 18:14:12

标签: php regex

我在尝试从文本

中提取正确的值时遇到问题

我想从以下文本中提取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

我做错了什么?任何帮助将不胜感激。

2 个答案:

答案 0 :(得分:2)

这样可行:

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

当然你应该听大家建议你使用DOM解析器而不是正则表达式。

答案 1 :(得分:1)

这应该适合你。

[0-9\.]+$