You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在特定模式前合并最后两行非空行?

问题描述

原始文本:

1.58%
0009
1991
/////////////////////////
Phil
ttr0018
1991
/////////////////////////

期望将分隔线/////////////////////////前的最后两行非空行合并,得到输出:

1.58%
0009 1991
/////////////////////////
Phil
ttr0018 1991
/////////////////////////

尝试了以下正则但未生效:
查找:^(\h*\S.*)(?=\R+(?:\h*\S.*\R+)?/{24})
替换:\1


问题分析与解决方案

你的正则没起效,核心是两个问题:

  1. 匹配范围错误:只捕获了单行内容,根本没选中需要合并的两行之间的换行符,自然没法把换行替换成空格实现合并。
  2. 断言逻辑冗余混乱:(?:\h*\S.*\R+)?这个可选分组会让正则的匹配边界模糊,没法精准定位到分隔线前的最后两行。

正确的正则写法

要精准匹配分隔线前的最后两行非空行,把它们之间的换行换成空格,用以下查找替换规则:

  • 查找:^(\h*\S.*)\R(\h*\S.*)\R(?={24})
  • 替换:$1 $2\n

规则解释

  • ^(\h*\S.*):捕获分隔线前倒数第二行的非空内容(^锁定行首,\h*\S.*确保行内有非空白字符)
  • \R:匹配两行之间的换行(兼容\n或\r\n格式)
  • (\h*\S.*):捕获分隔线前最后一行的非空内容
  • \R(?={24}):匹配最后一行和分隔线之间的换行,通过正向断言(?={24})确保后面紧跟24个斜杠,避免误匹配其他行
  • 替换时把两行之间的换行换成空格,保留最后一行与分隔线的换行,正好实现合并效果

内容的提问来源于stack exchange,提问作者Pubg Mobile

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.30 22:05:12