我正在尝试查找可能出现在注释块内的某个字符串。该字符串可以是一个词,但它也可以是一个词的一部分。例如,假设我正在寻找“codex”这个词,那么这个词应该替换为“bindex”,但即使它是一个词的一部分,比如“codexing”。这应该更改为“bindexing”。
诀窍是,只有当这个词在注释块内时才会发生这种情况。
/* Lorem ipsum dolor sit amet, codex consectetur adipiscing elit. */
This word --> codex should not be replaced
/* Lorem ipsum dolor sit
* amet, codex consectetur
* adipiscing elit.
*/
/** Lorem ipsum dolor sit
* amet, codex consectetur
* adipiscing elit.
*/
// Lorem ipsum dolor sit amet, codex consectetur adipiscing elit.
# Lorem ipsum dolor sit amet, codex consectetur adipiscing elit.
------------------- Below "codex" is part of a word -------------------
/* Lorem ipsum dolor sit amet, somecodex consectetur adipiscing elit. */
/* Lorem ipsum dolor sit
* amet, codexing consectetur
* adipiscing elit.
*/
And here also, this word --> codex should not be replaced
/** Lorem ipsum dolor sit
* amet, testcodexing consectetur
* adipiscing elit.
*/
// Lorem ipsum dolor sit amet, __codex consectetur adipiscing elit.
# Lorem ipsum dolor sit amet, codex__ consectetur adipiscing elit.
到目前为止我所拥有的是这段代码:
$text = preg_replace ( '~(\/\/|#|\/\*).*?(codex).*?~', '$1 bindex', $text);
正如您在此示例中所看到的,这并没有真正按照我想要的方式工作。当它位于多行注释块内时,它不会替换单词/* */
,有时它也会删除单词“codex”前面的所有文本。
如何改进我的正则表达式以使其满足我的要求?