2014-11-03 80 views
0

我已经尝试了很多很多的解决方案,但不幸的是,没有为我工作。 以下是我的代码。PHP否定正则表达式

<?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 但我怎么也找不到至。 非常感谢,我需要我能得到的所有帮助。 我想要的是替换不等于给定模式的字符串。

+0

你为什么不试试这个'$ Y =的preg_replace( “〜,10 \ W *,?〜?”, “”,$ X);'? – 2014-11-03 03:36:55

+0

我很抱歉,我很困惑。我忘了提及这个模式是动态的。它将来自于价值取决于用户的的值,这取决于用户。非常感谢你。 – 2014-11-03 07:53:27

0
,(?=[^,]+,[^,]*$).*$ 

尝试this.Replace。

http://regex101.com/r/tF4jD3/1

$re = "/,(?=[^,]+,[^,]*$).*$/"; 
$str = "09-27,09-28,10-01,10-02"; 
$subst = ""; 

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

美好的一天。$ str应该是动态的以及$ re.So,如果万一我的$ str =“09-27,09-28,10-01,10-02,10-03”和$ re = 10-它会替换所有10个,而不仅仅是最后2场比赛 – 2014-11-04 01:49:36