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);
使用\|对管道进行转义,因为它们是特殊字符。^^这也转义第二个美元符号。使用\|对管道进行转义,因为它们是特殊字符。^这也转义第二个美元符号。