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);