5

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

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

测试字符串是:

存储\nTransformer Book T101HA 中强大的四核 Intel X5 处理器意味着您可以轻松完成所有日常任务,\n无缝多任务处理让您在更短的时间内完成更多工作。存储也很方便灵活。内部有 128GB 的​​超高速闪存,可通过 micro SD 卡插槽轻松扩展。您还可以在 ASUS WebStorage 上获得一年免费无限云存储!\n\n颜色|白色/金色\n\n\n\n\n\nCPU|Innn dsafdsfdfa \n\n\n\n\n\n\ n\n dfnn

所以结果应该是:

存储\nTransformer Book T101HA 中强大的四核 Intel X5 处理器意味着您可以轻松完成所有日常任务,\n无缝多任务处理让您在更短的时间内完成更多工作。存储也很方便灵活。内部有 128GB 的​​超高速闪存,可通过 micro SD 卡插槽轻松扩展。您还可以在 ASUS WebStorage 上获得一年的免费无限云存储!\n\n颜色|白色/金色\n\n\n\n\n\nCPU|Innn dsafdsfdfa @@ dfnn

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

非常感谢。

4

1 回答 1

5

您可以使用

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

查看正则表达式演示

详情

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

如果意味着任何换行符,请替换\n\R.

于 2016-12-25T09:07:36.373 回答