仅当不属于另一个子串

时间:2016-01-05 17:46:16

标签: php regex string preg-replace

我正在尝试从字符串中删除子字符串,但前提是该子字符串不是另一个较大子字符串的一部分。我希望这很清楚。

例如,我想从下面的字符串中删除字母'p'的所有字母,但仅在它后面没有'e'的情况下。换句话说,我想删除'p',但不是'pe'。

apes are super people

应该成为:

apes are super peole

如您所见,只删除了一个字母'p'的出现。

2 个答案:

答案 0 :(得分:1)

你可以使用这个负面的前瞻性正则表达式:

/p(?!e)/

p(?!e)表示匹配p,如果没有后跟字母e

RegEx Demo

<强>代码:

$re = "/p(?!e)/"; 
$str = "apes are super people"; 

$result = preg_replace($re, '', $str);
//=> apes are super peole

答案 1 :(得分:1)

您可以将正则表达式与negative lookahead一起使用,以确保没有&#39; e&#39;按照&#39;#,然后您可以将正则表达式与preg_replace()一起使用:

h_t