匹配' $'正则表达式中的符号

时间:2018-01-22 19:25:08

标签: php regex

我有以下表达式:

"MSRP | <span style='text-decoration: line-through;'>$74,660</span><br /> Buy | $67,092

我需要

MSRP $74,600 $67,092

我似乎无法找到正则表达式来包含&#39; $&#39;匹配组中的符号。这就是我目前正在做的事情:

MSRP | <[^>]+>\$([^>]+)<[^>]+> *<[^>]+> *Buy | $([^>]+)\/i

这个表达有什么问题,为什么不包括&#39; $&#39;符号?

2 个答案:

答案 0 :(得分:1)

您需要转义$|,并将\$放在括号内以匹配组:

(MSRP) \| <[^>]+>(\$[^>]+)<[^>]+> *<[^>]+> *Buy \| (\$[^>]+)

答案 1 :(得分:1)

如果您想将$符号与结果中的数字一起使用,则需要将其放入括号中:

这是PHP的一个工作示例:

$str = "MSRP | <span style='text-decoration: line-through;'>$74,660</span><br /> Buy | $67,092";
preg_match('/MSRP \| <[^>]+>(\$[^>]+)<[^>]+> *<[^>]+> *Buy \| (\$[^>]+)/i', $str, $matches);

我得到了这样的结果:

 1 => '$74,660', 2 => '$67,092'