Azure Kusto - 如何使用解析从字符串中获取 url

Azure Kusto - how to fetch urls from a string using parse

let T = datatable(Id:int, Text:string)
[
   1, "SomeTextSome TextSomeText: https://someurl.com/fileId/edit/12649844",
   2, "SomeText SomeText&nbsp;<https://someurl.com/fileId/newedit/71244>SomeTextSomeTextSomeTextSomeText",
];
T | parse Text with * "someurl.com" myurl ">" * | project Id, myurl 

Output
=========
Id  myurl
1   
2   /fileId/newedit/12702480

需要一种方法来解析文本字段并从中提取 url。文本字段的内容是 html 正文。使用解析有效,如果 url Id 之后有更多字符,如“>”或空白 space,但是如果文本字段以 url id 结尾,则它不起作用。 Url id 不定长。如果不解析,是否有任何其他方法可以提取从 someurl.com 到 id 的所有内容,而不管 url 是在字符串的中间还是在末尾?

如果您对 URL 格式有任何了解,可以尝试将其包含在正则表达式中,并使用 extract() function.

例如:

datatable(Id:int, Text:string)
[
   1, "SomeTextSome TextSomeText:&nbsp;https://someurl.com/fileId/edit/12649844",
   2, "SomeText SomeText&nbsp;<https://someurl.com/fileId/newedit/71244>SomeTextSomeTextSomeTextSomeText",
]
| extend Url = extract(@"someurl\.com(/\w+/\w+/\d+)", 1, Text)
Id Text Url
1 SomeTextSome TextSomeText: https://someurl.com/fileId/edit/12649844|/fileId/edit/12649844|
2 SomeText SomeText https://someurl.com/fileId/newedit/71244SomeTextSomeTextSomeTextSomeText /fileId/newedit/71244
let T = datatable(Id:int, Text:string)
[
   1, "SomeTextSome TextSomeText:&nbsp;https://someurl.com/fileId/edit/12649844",
   2, "SomeText SomeText&nbsp;<https://someurl.com/fileId/newedit/71244>SomeTextSomeTextSomeTextSomeText",
];
T | extend URL=extract('&nbsp;.?(https://[a-zA-Z0-9/.]+)', 1, Text)

+1 到 Yoni L. 上面的回答。以上将包括 https.... 不确定这是否是您要查找的内容。

输出

URL
1   https://someurl.com/fileId/edit/12649844
2   https://someurl.com/fileId/newedit/71244