首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >Azure数据资源管理器,Kusto: regex在提取()中语义不正确

Azure数据资源管理器,Kusto: regex在提取()中语义不正确
EN

Stack Overflow用户
提问于 2020-05-27 21:29:20
回答 1查看 3.3K关注 0票数 1

我试图在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语句的内容:

代码语言:javascript
运行
复制
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 

为了正确解析字符串,我必须在数据资源管理器的每个\之前添加一个额外的\

EN

Stack Overflow用户

回答已采纳

发布于 2020-05-27 21:54:10

您的regex引擎会在后面查看,可能也会在前面查看。

extract有第二个参数,它告诉函数只返回捕获,所以可以使用

代码语言:javascript
运行
复制
| project extract("milk-cow-\\s*([a-zA-Z]+)", 1, info)

这意味着

  • milk-cow- -匹配milk-cow-
  • \s* -匹配0或多个whitespaces
  • ([a-zA-Z]+) -匹配并只捕获一个或多个ASCII字母。
票数 1
EN
查看全部 1 条回答
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/62053187

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档