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 <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: https://someurl.com/fileId/edit/12649844",
2, "SomeText SomeText <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: https://someurl.com/fileId/edit/12649844",
2, "SomeText SomeText <https://someurl.com/fileId/newedit/71244>SomeTextSomeTextSomeTextSomeText",
];
T | extend URL=extract(' .?(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
let T = datatable(Id:int, Text:string)
[
1, "SomeTextSome TextSomeText: https://someurl.com/fileId/edit/12649844",
2, "SomeText SomeText <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: https://someurl.com/fileId/edit/12649844",
2, "SomeText SomeText <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: https://someurl.com/fileId/edit/12649844",
2, "SomeText SomeText <https://someurl.com/fileId/newedit/71244>SomeTextSomeTextSomeTextSomeText",
];
T | extend URL=extract(' .?(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