Php 匹配非';t价格
我试图在正文中用X替换除价格(以$开头的数字)以外的所有数字。我一直试图用“回头看”来完成这项工作,但似乎不起作用。以下是我现在使用的:Php 匹配非';t价格,php,regex,Php,Regex,我试图在正文中用X替换除价格(以$开头的数字)以外的所有数字。我一直试图用“回头看”来完成这项工作,但似乎不起作用。以下是我现在使用的: $comments = preg_replace("/(?<!$)([0-9]+)/", "x", $comments); $comments=preg\u replace(“/(?您需要用反斜杠转义美元符号,\$),否则它将被解释为行/字符串的结尾 此外,第二个括号集完全没有必要-您没有使用捕获的组 哦,为了避免替换像$100这样的东西,你需要在你的
$comments = preg_replace("/(?<!$)([0-9]+)/", "x", $comments);
$comments=preg\u replace(“/(?您需要用反斜杠转义美元符号,\$
),否则它将被解释为行/字符串的结尾
此外,第二个括号集完全没有必要-您没有使用捕获的组
哦,为了避免替换像$100这样的东西,你需要在你的负回溯中添加0-9…既然你这样做了,你可以简单地将美元放在角色类中,而不需要转义
因此,在这一点上,我们有:
$comments = preg_replace("/(?<![$0-9])[0-9]+/", "x", $comments);
$comments=preg\u replace(“/(?您需要用反斜杠转义美元符号,\$
),否则它将被解释为行/字符串的结尾
此外,第二个括号集完全没有必要-您没有使用捕获的组
哦,为了避免替换像$100这样的东西,你需要在你的负回溯中添加0-9…既然你这样做了,你可以简单地将美元放在角色类中,而不需要转义
因此,在这一点上,我们有:
$comments = preg_replace("/(?<![$0-9])[0-9]+/", "x", $comments);
$comments=preg\u replace(“/(?$
是正则表达式中的一个特殊字符(表示字符串的结尾)。您需要对其进行转义:\$
同样按照目前的公式,您的lookback可能只会阻止它替换价格中的第一个数字;因为在第一个数字之后,lookback将继续匹配,因为您不再是美元
您可能希望使用包含\b
(单词边界)的内容来限制匹配数字序列的开头和结尾仅为整数。$
是正则表达式中的一个特殊字符(表示字符串的结尾)。您需要对其进行转义:\$
同样按照目前的公式,您的lookback可能只会阻止它替换价格中的第一个数字;因为在第一个数字之后,lookback将继续匹配,因为您不再是美元
您可能希望使用包含\b
(单词边界)的内容将匹配数字序列的开头和结尾限制为仅为整数。这也可以:
/(?<=\s)[0-9]+/
/(?这也应该有效:
/(?<=\s)[0-9]+/
/(?这会产生与以前相同的结果。嗯……是的,我也想到了。我没有发布这篇文章的原因是代码仍然能够在发布的解决方案中找到其他数字。请发布输入文本的示例-没有失败的原因,除非您的货币值不是格式。这会产生与以前相同的结果。嗯……是的,我我也想到了这一点。我没有发布这篇文章的原因是代码仍然能够在发布的解决方案中找到其他数字。请发布一个输入文本示例-没有理由失败,除非您的货币值不是格式。我尝试过避开美元符号,但问题仍然存在。我尝试过避开美元符号问题仍然存在。这个:(?)这个:(?)?