我正在尝试创建一个正则表达式,它替换未被括号括起来的单词。
这是我目前拥有的:
$this->parsed = preg_replace('/\b(?<!\[)('.preg_quote($word).')\b/','[$1['.implode(",",array_unique($types)).']]',$this->parsed);
$word 可以是以下之一,“Burkely Mayfair Trunk”或“Trunk”。
它将替换句子
这个 Burkely Mayfair 树干很漂亮
为了
这个 [Burkely Mayfair [Trunk[productname]][productname]] 很不错
虽然应该变成
这个 [Burkely Mayfair Trunk[productname]] 很不错
由于它按照最大字符串到最小字符串的顺序进行替换,因此较小的字符串和/或单词部分的两次出现不应在字符串的已替换部分中替换。当它是字符串的第一部分时,它可以工作。
当我尝试进行动态后视时,它会出现以下错误:“编译失败:后视断言在偏移量 11 处不是固定长度”。我不知道如何解决这个问题。
任何人有任何想法?