【发布时间】:2013-08-06 15:39:43
【问题描述】:
我正在尝试查找可能出现在注释块中的某个字符串。该字符串可以是一个词,但它也可以是一个词的一部分。例如,假设我正在寻找“codex”这个词,那么这个词应该替换为“bindex”,但即使它是一个词的一部分,比如“codexing”。这应该改为“bindexing”。
诀窍是,只有当这个词在 comment 块内时才会发生这种情况。
/* 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);
如您所见in this example,这并没有真正按照我想要的方式工作。当它位于多行 /* */ 注释块内时,它不会替换单词,有时它也会删除单词“codex”前面的所有文本。
如何改进我的正则表达式以使其符合我的要求?
【问题讨论】:
标签: php regex preg-replace