$regex = '/(?<=(total: ))(\$\d+\.\d+)/';
$search = '$1.25 cart total: $24.99 $55.50';
preg_match($regex, $search, $price);
我想从上面的字符串中提取'$ 24.99'。
当我打印$ price数组时,它是空白的。根据这个工具:http://regexr.com?2vfm9我的正则表达式应该正常工作。当我仅使用正则表达式的“(\ $ \ d +。\ d +)”部分运行代码时,数组会返回所有价格......所以我知道该部分正在运行。
我是否错误地实施了正面预测?还有其他想法吗?
更新: 我想我可能已经找到了问题:
我正在解析的文字有一个“&amp; nbsp;”结肠后。当我向自己显示原始文本时,它没有显示,但是正在干扰正则表达式。我会更新确认。
答案 0 :(得分:0)
你不需要在total:
周围捕捉括号,事实上它们在这种情况下甚至是有害的。他们抓住了。
尝试没有它们。
顺便说一句,你在这里使用的是一个积极的外观,而不是前瞻,我不明白你为什么要使用它?
答案 1 :(得分:0)
问题是您的\
未转义:
$regex = '/(?<=(total: ))(\\$\\d+\\.\\d+)/';
答案 2 :(得分:0)
要处理
,您可以使用:
$regex = '/(?<=(total:))[^$]+(\$\d+\.\d+)/';
$search = '$1.25 cart total: $24.99 $55.50';
preg_match($regex, $search, $price);
print_r($price);
<强>输出:强>
Array
(
[0] => $24.99
[1] => total:
[2] => $24.99
)