如何删除正则匹配组中的第二行?满足上下文条件的文本行删除求助
删除满足特定条件的中间行的正则替换方案
原始输入文本
ABC 5 0 gdfgdfg ----------- GHN 3 0 ffffffff fffff ffff trte ------------- H 1 0 ----------------
期望处理结果
ABC 0 gdfgdfg ----------- GHN 0 ffffffff fffff ffff trte ------------- H 0 ----------------
需求说明
需要删除满足以下条件的行:
- 该行上一行是非空且以字符开头的内容
- 该行下一行是仅包含0的行
- 目标行本身是单个0-9的数字
解决方案
你已经写出了能匹配这三行的正则表达式:
^(.+\S)$\R^(\d+)$\R^(0)$
要删除中间的数字行,只需在替换时保留第一行和第三行的内容,舍弃中间的第二行即可:
替换规则
- 查找内容(需开启多行模式
multiline和全局模式global):^(.+\S)$\R^(\d+)$\R^(0)$ - 替换内容:
$1\n\n$3
原理说明
$1对应正则中第一个捕获组,即上一行的非空字符行\n\n用来替换原本中间的数字行,留下一个空行$3对应正则中第三个捕获组,即下一行的仅含0的行
通过这个替换规则,就能精准删除符合条件的数字行,同时保留前后行的结构,得到你想要的结果。
内容的提问来源于stack exchange,提问作者Pubg Mobile
相关产品推荐
相关产品推荐

