首页 > 解决方案 > 正则表达式的 Azure Log Analytics 语法错误

问题描述

我正在为以下日志类型的日志文件编写 DNS 解析器:

18/03/2020 07:08:23 1164 数据包 000000C164RF56B0 UDP Rcv 10.128.151.34 076e Q [0001 D NOERROR] A (10)indelpus03(6)kworld(4)kay(3)com(0)

我试图抓住 [] 里面的任何东西 - 因此是 0001 D NOERROR。我有以下正则表达式,他有效:

(?<=[)(.*?)(?=])

但是,当我在 KQL 上测试它失败时,它说语法错误。如果有人有解决方案,请告诉我。域名等的正则表达式也是如此

标签: azurednskqlazure-sentinel

解决方案


这里有两种方法:
1)使用解析运算符:https ://docs.microsoft.com/en-us/azure/kusto/query/parseoperator

print m = '18/03/2020 07:08:23 1164 PACKET 000000C164RF56B0 UDP Rcv 10.128.151.34 076e Q [0001 D NOERROR] A (10)indelpus03(6)kworld(4)kay(3)com(0)'
| parse m with * '[' Message ']' *

2) 使用 extract() 函数:https ://docs.microsoft.com/en-us/azure/kusto/query/extractfunction

print m = '18/03/2020 07:08:23 1164 PACKET 000000C164RF56B0 UDP Rcv 10.128.151.34 076e Q [0001 D NOERROR] A (10)indelpus03(6)kworld(4)kay(3)com(0)'
| extend Message = extract(@'\[(.+?)\]', 1, m)

推荐阅读