替换字符串中的单词,但如果之前有自定义字符串,则不替换


Replace word in string, but not if it has custom string before?

如何替换字符串中的单词,但前提是该单词之前没有我选择的字符串?

例如,我们有以下字符串:

String 1: long boat
String 2: jet boat

如果前一个单词不是"jet",我如何替换"boat"?

我正在使用PHP,到目前为止我已经想出了这个。

preg_replace("/['s+]boat/", "", $string);

这适用于在后面有"jet"的单词

preg_replace("/['s+]boat(?!'s*jet)/", "", $string);

Lookbacking

使用此:

$replaced = preg_replace('~(?<!jet )boat~', '', $yourstring);

解释

  • 负后备(?<!jet )断言当前位置之前的不是jet
  • boat与文字字符匹配
  • 我们用空字符串替换

参考

  • 前瞻性和前瞻性零长度断言
  • 掌握向前看和向后看