PHP - 正则表达式删除一个字符太多

时间:2012-05-26 18:46:25

标签: php regex

我无法找到如何解决以下问题:

 preg_replace("/e[^t]/", "", "testet");

这将仅删除'e',但它会删除'es'。我怎样才能实现它只删除第一个e(并留下第二个'et')?

谢谢!

4 个答案:

答案 0 :(得分:5)

否定前瞻:

preg_replace("/e(?!t)/", "", "testet")

正如所解释的here前瞻不捕获字符(消费字符),如果匹配有效,它们只会断言。

答案 1 :(得分:1)

preg_replace("/e([^t])/", "$1", "testet");

答案 2 :(得分:1)

而不是/e[^t]/尝试使用/e(?!t)/(否定前瞻)

答案 3 :(得分:-3)

让它不贪婪

preg_replace("/e[^t]/u", "", "testet");