regex 如何查找x行中不包含特定单词的字符串

kd3sttzy  于 2023-01-06  发布在  其他
关注(0)|答案(1)|浏览(146)

我有很多json文件和内部标记,如

actions:
    - name: email
      template: email_exp_csr_008
      schedule:
       week: false
       workdays: true
       persistent: true

我需要找到“schedule:“后面3行中没有“workdays:“的情况。上面的示例不应匹配,但下面的示例应匹配:

actions:
    - name: email
      template: email_exp_csr_008
      schedule:
       week: false
       persistent: true
       werwer: True

我试过这样

schedule:(.*\n){0,3}.*[^(workdays)]

但是它不起作用,有人能帮忙吗?

bxjv4tth

bxjv4tth1#

如果要将行与schedule:匹配,则workdays:不应在以下前3行中:

^[^\S\n]*schedule:(?!(?:\n[^\S\n]*\w+:.*){0,2}\n[^\S\n]*workdays:)

参见regex101 demo
如果还想匹配以下0 - 3行:

^[^\S\n]*schedule:(?!(?:\n[^\S\n]*\w+:.*){0,2}\n[^\S\n]*workdays:)(?:\n[^\S\n]*\w+:.*){0,3}

参见regex101 demo
如果要将该行与schedule:匹配,并且workdays:不应以相同的缩进(前导空格)出现在后面的行中:

^([^\S\n]*)schedule:(?!(?:\n\1[^\S\n]*\w+:.*)*\n\1[^\S\n]*workdays:)

参见另一个regex101 demo

相关问题