Splunk如何使用正则匹配多个三重反斜杠提取routepoint字段
方案1:修正rex正则写法(快速提取单个字段)
原正则失效是因为未适配Splunk rex的多层转义规则,你可以直接用更简单的非贪婪匹配跳过转义符干扰,不需要处理复杂的转义匹配:
| rex field=_raw "routepoint[^0-9]+(?<routepoint>\d+)"
该写法逻辑为:匹配到routepoint字段名后,跳过所有非数字字符(包含所有转义反斜杠、引号、冒号),直接捕获后续连续数字作为routepoint字段值,兼容性更强。
方案2:还原JSON后提取(适合多字段提取场景)
如果你的日志整体是多层转义的JSON结构,可以先清理转义符,再用Splunk原生JSON提取命令处理,后续需要提取其他字段时不需要单独写正则:
| eval clean_raw=replace(_raw, "\\\\", "") | spath input=clean_raw path=routepoint output=routepoint
该写法先替换所有反斜杠得到标准JSON字符串,再用spath直接取值,适配性更高。
两种方案执行后再运行| table routepoint即可得到对应字段值。
内容的提问来源于stack exchange,提问作者Beachsandguy
相关产品推荐
相关产品推荐

