PHP否定正则表达式

PHP否定正则表达式,php,regex,negation,Php,Regex,Negation,我尝试了很多很多的解决方案,但不幸的是,没有什么对我有效。 下面是我的代码 <?php $x = "09-27,09-28,10-01,10-02"; $y = preg_replace("/09-\w*,/", "", $x); echo $y; ?> 这将输出10-01,10-02 现在,我想要的是否定它,所以输出是: 09-27,09-28 但我就是不知道该怎么做。 非常感谢,我需要所有能得到的帮助。 我想要的是替换不等于给定模式的字符串。只需匹配要删除的部分即可 $y

我尝试了很多很多的解决方案,但不幸的是,没有什么对我有效。 下面是我的代码

<?php
$x = "09-27,09-28,10-01,10-02";
$y = preg_replace("/09-\w*,/", "", $x);
echo $y;
?>

这将输出10-01,10-02 现在,我想要的是否定它,所以输出是: 09-27,09-28 但我就是不知道该怎么做。 非常感谢,我需要所有能得到的帮助。
我想要的是替换不等于给定模式的字符串。

只需匹配要删除的部分即可

$y = preg_replace("~,?10-\w*,?~", "", $x);

说明:

,?                       ',' (optional)
10-                      '10-'
\w*                      word characters (a-z, A-Z, 0-9, _) (0 or more times)
,?                       ',' (optional)
尝试此操作。替换为
空字符串
。请参阅演示


为什么不试试这个
$y=preg\u replace(“~,?10-\w*,?~,”,“,$x”)?非常抱歉。我弄糊涂了。我忘了提到模式将是动态的。它将来自一个取决于用户的值。非常感谢。解释从您的网站偷来。~是什么意思?我很抱歉。我弄糊涂了。我忘了提到模式将是动态的。它将来自一个取决于用户的值关于用户。非常感谢。您想删除最后两个部分吗?我想删除与给定模式不匹配的所有内容。祝您好运。$str应该是动态的,就像$re一样。因此,如果我的$str=“09-27,09-28,10-01,10-02,10-03”和$re=10-它将替换所有10-而不仅仅是最后两个匹配项
,(?=[^,]+,[^,]*$).*$
$re = "/,(?=[^,]+,[^,]*$).*$/";
$str = "09-27,09-28,10-01,10-02";
$subst = "";

$result = preg_replace($re, $subst, $str);