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

Python正则过滤syslog数组时删除不完整的问题排查与解决

问题:过滤syslog数组时部分匹配条目未被删除

场景说明

读取包含syslog内容的文本文件,示例内容如下:

Oct  3 12:09:01 webv2 CRON[1903]: (root) CMD (sudo /usr/bin/python3 /var/www/security/py_scripts/security_stuff.py 01_report_connections 0 &)
Oct  3 12:09:01 webv2 CRON[1906]: (root) CMD (  [ -x /usr/lib/php/sessionclean ] && if [ ! -d /run/systemd/system ]; then /usr/lib/php/sessionclean; fi)
Oct  3 12:09:03 webv2 systemd[1]: Starting Clean php session files...
...
..
.

将文件内容按行拆分存入长度为6800的数组data:

data = string.splitlines()

计划通过正则表达式数组对data进行过滤,正则数组定义:

regexArray = [
  ['CRON:', [
     'sec_stuff\.py report_cons'
    ,'\[ -x /usr/lib/php/sessionclean \] && if \[ ! -d /run/systemd/system \]; then /usr/lib/php/sessionclean; fi'
    ,'...'
    ,'..'
    ,'.'
    ]
  ],
  [...]
]

调用以下函数执行正则搜索:

def search_regexStuff(what, strings, regexString = ''):
  if what == 'allgemein':
    return re.findall(r""+regexString+"",strings)

异常现象

过滤过程中仅删除了部分匹配正则的条目:

  • 针对正则sec_stuff\.py report_cons,实际匹配2069条,但仅删除1181条;
  • 针对正则\[ -x /usr/lib/php/sessionclean \] && if \[ ! -d /run/systemd/system \]; then /usr/lib/php/sessionclean; fi,实际匹配68条,但仅删除59条。

需求是通过删除匹配项缩小data数组长度,加快后续搜索效率,最终将剩余内容写入文件。原处理代码如下:

for b in regexArray:
  for c in b[1]:
    regex = '.*'+b[0][:-1]+'.*'+c+'.*'
    n = -1
    for a in data:
      n += 1
      findLINE = search_regexStuff('allgemein', a, regex)
      if len(findLINE) != 0: # 匹配到内容,数组非空
        del data[n]
        n -= 1
o = ''
for i in data:
  o += i+'\n'
file = open('/folder/file_x.txt','w')
file.write(str(o))
file.close()  

解决方案(感谢@timus)

定义新函数,通过生成新数组的方式实现过滤:

def cleanMyDataArray( data, regex):
    o = ''; new_data = []
    for a in data:
        findLINE = search_regexStuff('allgemein', a, regex)
        if len(findLINE) == 0: # 未匹配到内容
            new_data.append( a )
    return new_data

修改调用逻辑,用新函数迭代过滤data数组:

for b in regexArray:
  for c in b[1]:
    regex = '.*'+b[0][:-1]+'.*'+c+'.*'
    data = cleanMyDataArray( data, regex)

问题解决。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.15 21:15:44