gpt4 book ai didi

python - RegEx 如何根据特定位置的字符否定匹配

转载 作者:太空宇宙 更新时间:2023-11-04 04:30:34 26 4
gpt4 key购买 nike

请注意:我正在使用 Python(3.6 版)编程,但也想将这些正则表达式移植到 SAS。

这里的大图是我正在使用 SAS 日志,我想排除打印到日志的来自 %include 语句的行。基本上,我想要完成的事情看起来像这样:

54210      proc sort data=inds out=outds;

我不想要的行将如下所示:

33406     +%global  var1 var2 var3;

关键是第 11 个字符将是一个 '+',但左边总会有一组数字后面跟着一组空格,其长度最终将是 11 个空格 - 除非 这是一个 %include 行,我想排除它。

我目前的情况是这样的:

^[0-9]{1,11} (?! {2,10}\+)

这有助于从我测试过的日志中准确地获取我想要的内容,但它远非正确。简单的方法是使用这个表达式:

^[0-9]{1,11} {3,10}

然后添加一个额外条件,如果第 11 个字符是“+”,则忽略该行,但我可以在单个正则表达式中执行此操作吗?我遇到了前瞻/后视研究,但问题是第一个匹配组的长度可能会有所不同,它会在预期“+”的位置移动——所以有没有一种方法可以匹配一组中的一个组length, then 如果匹配后跟一个字符则否定匹配?

最佳答案

你可以使用

^\d+ +(?<=.{11})

参见 regex demo

详情

  • ^ - 字符串开始
  • \d+ + - 1+ 个数字,然后 1+ 个空格
  • (?<=.{11}) - 一个积极的后视检查,需要紧邻当前位置左侧的 11 个字符。

关于python - RegEx 如何根据特定位置的字符否定匹配,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52709876/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com