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

Php 匹配'$';正则表达式中的符号,php,regex,Php,Regex,我有以下的表达: "MSRP | <span style='text-decoration: line-through;'>$74,660</span><br /> Buy | $67,092 我似乎找不到在匹配组中包含“$”符号的正则表达式。这就是我目前正在做的: MSRP | <[^>]+>\$([^>]+)<[^>]+> *<[^>]+> *Buy | $([^>]+)\/i MSRP

我有以下的表达:

"MSRP | <span style='text-decoration: line-through;'>$74,660</span><br /> Buy | $67,092
我似乎找不到在匹配组中包含“$”符号的正则表达式。这就是我目前正在做的:

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

此表达式有什么问题?为什么不包含“$”符号

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

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

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

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

如果要将$sign与结果中的数字放在一起,需要将其放在括号中:

下面是一个使用PHP的工作示例:

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

如果希望将$符号与结果中的数字放在一起,则需要将其放在括号中:

下面是一个使用PHP的工作示例:

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

使用\|对管道进行转义,因为它们是特殊字符。^^这也转义第二个美元符号。使用\|对管道进行转义,因为它们是特殊字符。^这也转义第二个美元符号。