extract_all()
从源字符串中获取正则表达式的所有匹配项。 还可以检索匹配组的子集。
print extract_all(@"(\d+)", "a set of numbers: 123, 567 and 789") // results with the dynamic array ["123", "567", "789"]
弃用的别名:extractall()
语法
extract_all(
regex,
[captureGroups,
] source)
详细了解语法约定。
参数
客户 | 类型 | 必需 | 说明 |
---|---|---|---|
regex | string |
✔️ | 一个正则表达式,包含 1 到 16 个捕获组。 |
captureGroups | dynamic |
一个数组,指示要提取的捕获组。 有效值为 1 到正则表达式中的捕获组数量。 还允许使用命名捕获组。 请参阅示例。 | |
source | string |
✔️ | 要搜索的字符串。 |
返回
- 如果 regex 在 source 中找到匹配项,则:返回一个动态数组,其中包括针对所指示的捕获组 captureGroups 或 regex 中的所有捕获组的所有匹配项 。
- 如果 captureGroups 的数目为 1,则:返回的数组有一维的匹配值。
- 如果 captureGroups 的数目大于 1,则:返回的数组是一个二维集合,其中包含针对 captureGroups 选择或 regex 中出现的所有捕获组(如果省略 captureGroups)的多值匹配项。
- 如果没有匹配项,则返回:
null
。
示例
提取单个捕获组
以下查询返回 GUID 的十六进制字节表示形式(两个十六进制数字)。
print Id="82b8be2d-dfa7-4bd1-8f63-24ad26d31449"
| extend guid_bytes = extract_all(@"([\da-f]{2})", Id)
输出
ID | guid_bytes |
---|---|
82b8be2d-dfa7-4bd1-8f63-24ad26d31449 | ["82","b8","be","2d","df","a7","4b","d1","8f","63","24","ad","26","d3","14","49"] |
提取多个捕获组
以下查询使用带有三个捕获组的正则表达式,将每个 GUID 部分拆分为第一个字母、最后一个字母以及中间部分。
print Id="82b8be2d-dfa7-4bd1-8f63-24ad26d31449"
| extend guid_bytes = extract_all(@"(\w)(\w+)(\w)", Id)
输出
ID | guid_bytes |
---|---|
82b8be2d-dfa7-4bd1-8f63-24ad26d31449 | [["8","2b8be2","d"],["d","fa","7"],["4","bd","1"],["8","f6","3"],["2","4ad26d3144","9"]] |
提取捕获组的子集
以下查询选择捕获组的一个子集。
正则表达式匹配第一个字母、最后一个字母以及所有剩余部分。
captureGroups 参数仅用于选择第一个和最后一个部分。
print Id="82b8be2d-dfa7-4bd1-8f63-24ad26d31449"
| extend guid_bytes = extract_all(@"(\w)(\w+)(\w)", dynamic([1,3]), Id)
输出
ID | guid_bytes |
---|---|
82b8be2d-dfa7-4bd1-8f63-24ad26d31449 | [["8","d"],["d","7"],["4","1"],["8","3"],["2","9"]] |
使用命名捕获组
以下查询中的 captureGroups 使用捕获组索引和命名捕获组引用来提取匹配值。
print Id="82b8be2d-dfa7-4bd1-8f63-24ad26d31449"
| extend guid_bytes = extract_all(@"(?P<first>\w)(?P<middle>\w+)(?P<last>\w)", dynamic(['first',2,'last']), Id)
输出
ID | guid_bytes |
---|---|
82b8be2d-dfa7-4bd1-8f63-24ad26d31449 | [["8","2b8be2","d"],["d","fa","7"],["4","bd","1"],["8","f6","3"],["2","4ad26d3144","9"]] |