如何在Sentinel中使用正则按两种不同分隔符拆分字段值
解决方案
你之前的写法失效的核心原因:
split()函数仅支持固定字符串作为单一分隔符,不识别正则语法,因此第一种传入'-|$60'的写法会被识别为匹配完整的-|$60字符串,无法完成拆分。- 第二种写法中,第一次
split()返回的是动态数组类型,直接传入第二个split()作为拆分对象,参数类型不匹配,因此执行不生效。
方案1:统一替换分隔符后拆分(推荐,性能最优)
先将所有$60分隔符替换为-,再用split统一拆分,逻辑简单适配绝大多数场景:
| extend FieldName = replace_string(FieldName, '$60', '-') | extend FieldNameSplit = split(FieldName, '-')
如果需要保留原始字段,也可以新建临时字段做替换:
| extend TempField = replace_string(FieldName, '$60', '-') | extend FieldNameSplit = split(TempField, '-') | project-away TempField // 用完删除临时字段即可
方案2:使用正则拆分函数
如果不想修改原始内容,可以用KQL原生支持正则的split_regex()函数,注意正则中$是特殊字符,需要转义:
// 使用@前缀声明原生字符串,避免转义符重复书写 | extend FieldNameSplit = split_regex(FieldName, @'-|\$60')
内容的提问来源于stack exchange,提问作者Gregor
相关产品推荐
相关产品推荐

