gpt4 book ai didi

php - 使用正则表达式查找和替换注释 block 中的(部分)字符串

转载 作者:可可西里 更新时间:2023-10-31 22:44:17 25 4
gpt4 key购买 nike

我正在尝试查找可以出现在评论 block 中的特定字符串。该字符串可以是一个词,但也可以是一个词的一部分。例如,假设我正在寻找“codex”这个词,那么这个词应该被替换为“bindex”,但即使它是一个词的一部分,比如“codexing”。这应该更改为“bindexing”。

诀窍是,只有当这个词位于comment block 内时才会发生这种情况。

/* 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 ,这并不是我想要的方式。它不会替换位于多行 /* */ 注释 block 中的单词,有时它还会删除单词“codex”前面的所有文本。

如何改进我的正则表达式以满足我的要求?

最佳答案

由于您在此处处理多行文本,因此您应该使用 s 修饰符 (DOTALL) 来匹配多行文本。也不需要转义正斜杠。

试试这段代码:

$text = preg_replace ( '~(//|#|/\*).*?(codex).*?~s', '$1 bindex', $text );

关于php - 使用正则表达式查找和替换注释 block 中的(部分)字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18066505/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com