我试图在Kusto中获取列值的子字符串。
我知道字符串之前总是以‘文本-为了乐趣’的格式,然后是我想要的字母串,后面跟着不是字母的任何东西。
我认为我应该使用extract()
,因为它允许我输入一个正则表达式来处理字符串后面可能出现的多种字符。
然而,当我尝试进入regex时,我总是会得到一个SEM0420: Semantic error: Regex pattern is ill formed
。
你能帮我弄清楚如何正确地进入regex吗?
示例字符串:stuff milk-cow-cocoa a/123
想要的子字符串:cocoa
当前正则表达式:(?<=milk-cow-\s*).*?(?=\s*[^A-Za-z])
Note:看起来单个星号正在被移除。它们出现在下面的代码中。
此时,\s
将防御地解析字符串并删除空白空间。整个字符串的结尾也可能在所需的子字符串之后立即存在。
我尝试了类似于Data语句的内容:
cluster("mine").database("mine").
DataTable
| where PreciseTimeStamp >ago(5h) and resourceProvider == "Provider"
| where info has "cow-milk-"
| take 200
| project extract("(?<=milk-cow-\\s*).*?(?=\\s*[^A-Za-z])", 0, info), info
为了正确解析字符串,我必须在数据资源管理器的每个\
之前添加一个额外的\
。
发布于 2020-05-27 21:54:10
您的regex引擎会在后面查看,可能也会在前面查看。
extract
有第二个参数,它告诉函数只返回捕获,所以可以使用
| project extract("milk-cow-\\s*([a-zA-Z]+)", 1, info)
这意味着
milk-cow-
-匹配milk-cow-
\s*
-匹配0或多个whitespaces([a-zA-Z]+)
-匹配并只捕获一个或多个ASCII字母。https://stackoverflow.com/questions/62053187
复制相似问题