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

如何用regex实现指定行捕获:存在999取其上方内容,否则取空行上方内容

正则实现方案

你可以使用非贪婪匹配+正向预查的组合实现需求,无需多分支判断,单行正则就能覆盖两类场景,以\n作为换行符为例(Windows环境下替换为\r\n即可):

(numbers:(?:\n.+)*?)(?=\n999\n|\n\n)

规则说明

  • 捕获组内使用非贪婪量词*?,解决原来贪婪匹配吞掉999的问题
  • 末尾的(?=\n999\n|\n\n)是正向肯定预查,仅判断终止条件不消耗匹配内容,两个终止条件分别对应两类场景:
    • 匹配到\n999\n:对应存在999且其后紧跟空行的场景,此时捕获组会自动停在999之前
    • 匹配到\n\n:对应不存在999的场景,此时捕获组停在第一个空行之前

测试效果

  • 第一类文件匹配结果(捕获组内容):
    numbers:
    32
    45
    
  • 第二类文件匹配结果(捕获组内容):
    numbers:
    23
    45
    

完全符合捕获要求。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.05 03:03:02