gpt4 book ai didi

php - 我可以使用 preg_replace 在多行模式下去除尾随的\n 吗?

转载 作者:行者123 更新时间:2023-12-04 06:31:23 27 4
gpt4 key购买 nike

I just answered a question here ,这让我问自己的问题。

基本上,OP 想要删除任何包含字符串的行。这是我想出的一个正则表达式......

$str = preg_replace('/^.*\b["(]?hello["(]?\b.*$/m', '', $str);

效果很好,但因为 $在尾随 \n 之前匹配,它们在替换时仍然存在并且有空行,例如
string(90) "
What it shouldhello do is:


could be words in between brackets and inverted commas also."

我不能用 \z因为我处于多行模式(至少我是这么认为的)。

如果我使用 s修饰符, .变得太贪婪,不能跨换行工作。

我尝试了一些东西(例如 [^\n][\s\S] ),现在我被难住了。

我如何匹配尾随 \n在这里,所以它被替换删除了?

最佳答案

使用\n 代替 $。

$str = preg_replace('/^.*\b["(]?hello["(]?\b.*\n/m', '', $str);

如果它有 hello 的话,它会错过最后一行,所以这里更进一步。
$str = preg_replace('/^.*\b["(]?hello["(]?\b.*(\n|$)/m', '', $str);

现在的问题是删除了最后一行,但仍然有一个\n 字符(您已经遇到了类似的问题)。

注意:我根本不是正则表达式专家,通常只能满足我的需求。

关于php - 我可以使用 preg_replace 在多行模式下去除尾随的\n 吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5378163/

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