Regex多排除规则与不同模式匹配问题(XSOAR环境)
解决方案
问题分析
你之前的正则存在两个核心问题:
[^value|^id]是字符集匹配规则,会错误排除所有包含v、a、l、u、e、i、d单个字符的字段名,这直接导致cyber_kill_change这类含i、l的字段被过滤,无法匹配。- 捕获组包含了字段分隔符(比如
": "),所以匹配结果会带上冗余字符,而非仅目标MD5哈希。
结合XSOAR不支持反向预查的限制,我们需要用正向匹配合法字段名的方式实现需求。
正确正则表达式
"((?!value|id)[^"]+)"\:\s"([a-fA-F0-9]{32})"|'((?!value|id)[^']+)'\:\su'([a-fA-F0-9]{32})'
正则说明
- 字段名匹配:
- 双引号字段:
"((?!value|id)[^"]+)"匹配双引号包裹、且字段名不等于value或id的内容 - 单引号字段:
'((?!value|id)[^']+)'匹配单引号包裹、且字段名不等于value或id的内容 (?!value|id)是正向预查(XSOAR支持该语法),专门用来排除字段名恰好为value或id的情况
- 双引号字段:
- 分隔符匹配:
- 对应双引号字段的
:(冒号加空格):\:\s - 对应单引号字段的
: u(冒号加空格加u):\:\su
- 对应双引号字段的
- MD5捕获:
([a-fA-F0-9]{32})单独捕获32位十六进制格式的MD5哈希,这部分就是你需要提取的纯净结果
使用注意
在XSOAR中,提取捕获组2(双引号字段后的MD5)和捕获组4(单引号字段后的MD5)的内容即可得到目标哈希值。
内容的提问来源于stack exchange,提问作者RemDosal
相关产品推荐
相关产品推荐

