在字符串PHP

时间:2016-12-25 08:36:35

标签: php regex string replace last-occurrence

我需要在字符串中替换最后一次至少两个新行( \ n \ n ),因此它应该是 \ n \ n \ n \ n \ n \ n \ n \ n \ n 等等(至少2 \ n )" @@ "。我认为它应该是 preg_replace 。我在 stackoverflow 的答案中尝试了很多选项,但是所有这些选项都有一些未被捕获的情况。我尝试使用regex101网站来准备正则表达式,但我在这方面并不强大,所以我找到了一些看起来像在网站上工作的解决方案(/((\\n){2,})+(?!.*((\\n){2,})+)/i),但是当我在我的代码中尝试它时,我没有&# 39;工作。

另一个是([\\n\\n])+(.[^\\n\\n])*$,但这个也是最后一个 nn

测试字符串是:

  

存储\ nRinformer T101HA中功能强大的四核英特尔X5处理器意味着您可以轻松完成所有日常任务,\ n无缝多任务处理可让您在更短的时间内完成更多工作。存储也很方便灵活。在内部,有128GB的超快闪存,并且可以通过微型SD卡插槽轻松扩展。您还可以在华硕WebStorage上获得为期一年的免费无限云存储!\ n \ nColor |白色/金色\ n \ n \ n \ n \ n \ n \ nCPU | Innn dsafdsfdfa \ n \ n \ n \ n \ n \ n \ n \ n dfnn

所以结果应该是:

  

存储\ nRinformer T101HA中功能强大的四核英特尔X5处理器意味着您可以轻松完成所有日常任务,\ n无缝多任务处理可让您在更短的时间内完成更多工作。存储也很方便灵活。在内部,有128GB的超快闪存,并且可以通过微型SD卡插槽轻松扩展。您还可以在华硕WebStorage上获得为期一年的免费无限云存储!\ n \ nColor |白色/金色\ n \ n \ n \ n \ n \ n \ nCPU | Innn dsafdsfdfa @@ DFNN

任何人都可以帮忙解决这个问题,也可以解释回答正则表达式的逻辑。

非常感谢。

1 个答案:

答案 0 :(得分:5)

您可以使用

/\n{2,}(?!.*\n{2})/s

请参阅regex demo

<强>详情:

  • \n{2,} - 2个或更多新行
  • (?!.*\n{2}) - 未跟随任何0+字符,后跟2个换行符。

如果有任何换行符,请将\n替换为\R