php - 在换行符上使用非常具体的模式进行正则表达式故障排除
问题描述
我正在尝试在 PHP 中操作字符串以完成以下操作:
示例输入:
"""
line1\n
\n
line2\n
\n
\n
\n
line3\n
\n
\n
\n
\n
line4\n
\n
line5
"""
期望的输出:
"""
line1\n
line2\n
\n
line3\n
\n
line4\n
line5
"""
到目前为止,为了在我的 javascript 中实现这一点,我有:text.split('\n\n').join('\n')
并且在 PHP 端,我正在使用这个表达式:preg_replace('~(\R{2})\R+~', '$1', $text)
。
这两种方法可以完成这项工作,但是这个过程似乎很时髦,因为正则表达式根本不是我的事,我想知道是否有更好的方法来做到这一点?我确定有:)
解决方案
您可以使用
preg_replace('~(\R{2})\R+|(\R){2}~', '$1$2', $text)
查看正则表达式演示
细节
(\R{2})\R+
- 在第 1 组中捕获两个换行序列,然后是一个或多个换行序列|
- 或者(\R){2}
- 两个换行序列将最后一个捕获到第 2 组。
替换是 Group 1 或 Group 2 的值(因为其中一个始终是空字符串)。
推荐阅读
- python - 使用 Pandas 和字典按功能过滤 .csv 文件
- python - 多查询数据框表
- python - Python LSTM 比特币预测平线
- r - caret::predict 给出错误:$ 运算符对原子向量无效
- asp.net-core - 获取请求后,Azure 上托管的 Web API 不返回本地数据
- python - 如何使用基于 windows 的 python 代码随机更改 Windscribe VPN
- javascript - Underscore _.map 和 JS 内置函数有什么区别吗?
- bash - ssh 配置文件可以从另一个文件中读取吗?
- powershell - 尝试从批处理文件运行 PowerShell 命令时出现错误
- javascript - 是否可以将 1 个 JS 文件用于 2 个 HTML?