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

正则表达式捕获日志中可变前置标识与指定数字间的字符串问题

解决日志内容兼容捕获问题

原来的正则只适配了日期时间后是四位数的情况,要兼容N/A的格式,只需修改正则里的前缀匹配规则,让它同时识别四位数和N/A两种情况就行。

修改后的代码如下:

import re

# 测试两种格式的日志
test_strings = [
    '2023-03-20 / 10:56:58 4737 Security-Enabled Global Group Modified 73 high SRVDC2 john.smi.admin 10.7.3.252 1',
    '2023-03-20 / 10:56:58 N/A Security-Enabled Global Group Modified 73 high SRVDC2 john.smi.admin 10.7.3.252 1'
]

# 修改后的正则:用非捕获组匹配四位数或N/A,再匹配空格
pattern = r'(?<=(?:\d{4}|N/A) )(.*?)(?=\s\d{2}\s)'
for s in test_strings:
    res = re.findall(pattern, s, re.MULTILINE)
    print(res)

修改说明

  • 把原正则的(?<=\d{4} )替换成(?<=(?:\d{4}|N/A) ),(?:...)是非捕获组,用来包裹两种可能的前缀(四位数或N/A),这样正则就能同时兼容两种格式的日志前缀。
  • 其余逻辑保持不变,依然能精准捕获到两位数字前的目标内容。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.27 05:29:53