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

如何在多行文本中查找后续3行内无workdays的schedule?

正则匹配:查找schedule:后3行内未出现workdays:的场景

需求说明

你需要从大量JSON/YAML格式的文件中,找出所有满足「schedule:之后的3行内未出现workdays:」的片段:

  • 不应匹配的示例(包含workdays:):
actions:
    - name: email
      template: email_exp_csr_008
      schedule:
       week: false
       workdays: true
       persistent: true
  • 应匹配的示例(无workdays:):
actions:
    - name: email
      template: email_exp_csr_008
      schedule:
       week: false
       persistent: true
       werwer: True

之前正则的问题

你写的schedule:(.*\n){0,3}.*[^(workdays)]逻辑错误:

  • [^(workdays)] 是匹配单个不是括号、w/o/r/k/d/a/y/s的字符,不是排除整个workdays:字符串
  • 整体逻辑没有做到“确保3行范围内完全不出现workdays:”

正确的正则表达式

使用否定前瞻来实现“指定范围内无目标字符串”的逻辑,正则如下:

schedule:(?:(?!workdays:).*\n){0,3}(?!.*workdays:)

拆解说明:

  • schedule: 精准匹配起始标记
  • (?:(?!workdays:).*\n){0,3}:
    • (?!workdays:) 是行内否定前瞻,确保当前行的任意位置都不包含workdays:
    • .*\n 匹配整行内容(包括换行符)
    • {0,3} 限制最多匹配3行
  • (?!.*workdays:) 最后做一次兜底检查,确保3行范围内的末尾也没有遗漏的workdays:

使用提示

如果在编辑器(如VS Code)或命令行工具(如grep -P)中使用,记得开启正则多行匹配模式(部分工具默认支持),这样能准确识别每行的边界。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.06 09:45:35