extract()

适用于:✅Azure 数据资源管理器Azure MonitorMicrosoft 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