如何在正则提取操作中排除特定匹配项?
可用正则表达式方案
最终写法
你可以直接使用以下正则,保留原有error命名分组的同时排除footype匹配:
(?<error>(?!foo)[0-9a-z]+type=)
规则说明
- 在原有的小写字母/数字匹配逻辑前新增负向前瞻
(?!foo):只要当前位置后续连续3个字符为foo就会终止匹配,自然过滤掉footype=的场景 - 整体匹配逻辑和你原有正则完全一致,仅新增排除规则
匹配效果验证
对你给出的三个示例事件匹配结果如下:
auid=3000964000type=DAEMON_START:正常匹配,error分组捕获对应前缀内容footype=DAEMON_START:触发负向前瞻规则,无匹配结果asfasdatype=DAEMON_START:正常匹配,error分组捕获对应前缀内容
可选调整
如果你需要完整捕获含=的前缀内容(比如第一个示例中完整的auid=3000964000type=),可以把字符集调整为包含=,写法如下:
(?<error>(?!foo)[0-9a-z=]+type=)
内容的提问来源于stack exchange,提问作者SDV
相关产品推荐
相关产品推荐

