我需要在字符串中替换最后一次至少两个新行( \ 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
任何人都可以帮忙解决这个问题,也可以解释回答正则表达式的逻辑。
非常感谢。
答案 0 :(得分:5)
您可以使用
/\n{2,}(?!.*\n{2})/s
请参阅regex demo
<强>详情:
\n{2,}
- 2个或更多新行(?!.*\n{2})
- 未跟随任何0+字符,后跟2个换行符。如果有任何换行符,请将\n
替换为\R
。