Php 通过preg_替换删除价格

Php 通过preg_替换删除价格,php,regex,string,preg-replace,price,Php,Regex,String,Preg Replace,Price,我试图通过preg_替换为正则表达式从字符串中删除price,但它不起作用。我想从给定字符串中删除202,00 <?php $haystack = "4 x 3XS - € 202,00, L, 2XS, 4 x XS - € 202,00, S"; echo preg_replace('/^(?:0|[1-9]\d*)(?:\,\d{2})?$/','',$haystack); ?> 预期结果: 4 x 3倍长,2倍宽,4 x x长,2倍宽 任何帮助都将不胜感激。您可

我试图通过preg_替换为正则表达式从字符串中删除price,但它不起作用。我想从给定字符串中删除202,00

<?php
   $haystack = "4 x 3XS - € 202,00, L, 2XS, 4 x XS - € 202,00, S";
   echo preg_replace('/^(?:0|[1-9]\d*)(?:\,\d{2})?$/','',$haystack);
?>
预期结果:

4 x 3倍长,2倍宽,4 x x长,2倍宽


任何帮助都将不胜感激。

您可以使用正则表达式:

(?<=€\s)(\d*,?\d+)
输出:

4 x 3 x 1欧元、2 x 2欧元、4 x x x 2欧元


您可以试试。

您可以使用正则表达式:

(?<=€\s)(\d*,?\d+)
输出:

4 x 3 x 1欧元、2 x 2欧元、4 x x x 2欧元

你可以试试。

你可以用

$haystack = "4 x 3XS - € 202,00, L, 2XS, 4 x XS - € 202,00, S";
echo preg_replace('/\s*(?:-\s*)?€\s*\d+(?:,\d+)?/u','',$haystack);

由于模式包含Unicode字符,因此向正则表达式添加u修饰符更安全。模式匹配

\s*-0+空格 ?:-\s*?-可选的-和0+空格序列 欧元-欧元符号 \s*-0+空格 \d+-1+位 ?:,\d+?-可选的、和1+数字序列。 你可以用

$haystack = "4 x 3XS - € 202,00, L, 2XS, 4 x XS - € 202,00, S";
echo preg_replace('/\s*(?:-\s*)?€\s*\d+(?:,\d+)?/u','',$haystack);

由于模式包含Unicode字符,因此向正则表达式添加u修饰符更安全。模式匹配

\s*-0+空格 ?:-\s*?-可选的-和0+空格序列 欧元-欧元符号 \s*-0+空格 \d+-1+位 ?:,\d+?-可选的、和1+数字序列。
预期结果是什么?@WiktorStribiżew我编辑了问题请检查预期结果预期结果是什么?@WiktorStribiżew我编辑了问题请检查预期结果result@NiravJoshi请注意,“/?@WiktorStribiżew比如何解决这个问题更重要。你能帮帮我吗?@WiktorStribiż新观点很好,谢谢。我已经更新了我的答案Nirav。@UnderrableLightness是的,但是字符串中仍然有欧式符号,OP也需要删除它们,如果有连字符的话。至少我是这样解释问题中的预期输出的。事实上,我不明白在你的模式中查找和捕获组的目的,你不需要这些构造。@WiktorStribiżew是的,我只是说OP的最新编辑。起初,这些信息并不存在。至少这是我收集的,我想删除202,00。@NiravJoshi注意到“/?@WiktorStribiżew比如何解决这个问题更重要。你能帮帮我吗?@WiktorStribiż新观点很好,谢谢。我已经更新了我的答案Nirav。@UnderrableLightness是的,但是字符串中仍然有欧式符号,OP也需要删除它们,如果有连字符的话。至少我是这样解释问题中的预期输出的。事实上,我不明白在你的模式中查找和捕获组的目的,你不需要这些构造。@WiktorStribiżew是的,我只是说OP的最新编辑。起初,这些信息并不存在。至少这是我收集的,我想删除202,00。太棒了。工作得很好。非常感谢你令人惊叹的工作得很好。非常感谢你