PHP否定正则表达式

时间:2014-11-03 03:33:58

标签: 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 但我只是找不到如何。 非常感谢,我需要得到所有帮助。 我想要的是替换不等于给定模式的字符串。

2 个答案:

答案 0 :(得分:2)

只需匹配您要删除的部分。

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

DEMO

<强>解释

,?                       ',' (optional)
10-                      '10-'
\w*                      word characters (a-z, A-Z, 0-9, _) (0 or more times)
,?                       ',' (optional)

答案 1 :(得分:0)

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

试试这个。empty string。见。演示。

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

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

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