Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/algorithm/10.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 正则表达式匹配正确的文本_Php_Regex - Fatal编程技术网

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

Php 正则表达式匹配正确的文本,php,regex,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: 1

我在尝试从文本中提取正确的值时遇到问题

我想从以下文本中提取
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
价格:$;57.71(£;37.61)
航运(英国):$;14.50
我一直在尝试使用下面的正则表达式

regex

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

preg_match('/Shipping \(UK\):<\/span>&#036;([0-9]+\.[0-9]+)/', $html, $matches);
preg_match(“/Shipping\(UK\):$;([0-9]+\[0-9]+/”,$html,$matches);
当然,您应该听每个人建议您使用DOM解析器而不是正则表达式。

这将起作用:

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

当然,你应该听每个人建议你使用DOM解析器而不是正则表达式。

这应该对你有用

[0-9\.]+$

这应该对你有好处

[0-9\.]+$

为什么不直接使用javascript从DOM中提取值呢?贪婪。使用
*?
/U
标志。最好使匹配更加具体。@Blaine因为我正在抓取一个网站…哦,看,mk_89正试图使用正则表达式解析HTML--这不是一个好主意…最好使用解析器()对于这一点。@Buggabill这看起来很有趣,我会看看它。为什么你不直接使用javascript从DOM中提取值?贪婪。使用
*?
/U
标志。更好的是使匹配更加具体。@Blaine因为我正在抓取一个网站…哦,看,mk_89试图使用正则表达式解析HTML--不是一个好的idea、 …最好使用解析器()。@Buggabill这看起来很有趣,我来看看