你当前正在访问 Microsoft Azure Global Edition 技术文档网站。 如果需要访问由世纪互联运营的 Microsoft Azure 中国技术文档网站,请访问 https://docs.azure.cn

extract()

适用于:✅✅Azure 数据资源管理器Azure Monitor✅ Sentinel

从源字符串中获取正则表达式的匹配项。

(可选)将提取的子字符串转换为指明的类型。

语法

extract( regex,captureGroup,source [,typeLiteral])

详细了解语法约定

参数

客户 类型​​ 必需 说明
regex string ✔️ 一个正则表达式
captureGroup int ✔️ 要提取的捕获组。 0 代表整个匹配项,1 代表正则表达式中第一个括号 () 匹配的值,并用 2 及以上数字代表后续括号。
source string ✔️ 要搜索的字符串。
typeLiteral string (如果支持)提取的子字符串将转换成此类型。 例如 typeof(long)

返回

如果 regex 在 source 中找到了匹配项:与指定捕获组 captureGroup 匹配的子字符串可转换为 typeLiteral(可选) 。

如果没有匹配项,或类型转换失败:null

示例

从日期/时间字符串中提取月份

以下查询从字符串 Dates 中提取月份,并返回包含日期字符串和月份的表。

let Dates = datatable(DateString: string)
[
    "15-12-2024",
    "21-07-2023",
    "10-03-2022"
];
Dates
| extend Month = extract(@"-(\d{2})-", 1, DateString, typeof(int))
| project DateString, Month

输出

DateString
15-12-2024 12
21-07-2023 7
10-03-2022 3

从字符串中提取用户名

以下示例从字符串中返回用户名。 正则表达式 ([^,]+) 匹配以下文本“User: ”,最多是下一个逗号,从而有效地提取用户名。

let Text = "User: JohnDoe, Email: johndoe@example.com, Age: 29";
| print UserName = extract("User: ([^,]+)", 1, Text)

输出

UserName
JohnDoe