正则表达式使用 *One* 捕获组获取可预测字符串中的数字

Regex Get number in Predictable String with *One* Capturing group

GCP 日志记录(基于日志的指标)正则表达式要求我只为我的正则表达式过滤器使用 1 个捕获组,因此,我无法使用我喜欢的前瞻和后视。如何获取KeyOne:之后的号码?

日志: KeyOne:32|KeyTwo:0|KeyThree:|Language:english

需要捕获32

如果允许我使用多个捕获组,这将有效:(?<=KeyOne:)([0-9]+)(?=|)

有没有办法用一个捕获组来做到这一点?

你想做的事情可以用一个没有环顾四周的捕获组来完成,因为正则表达式是用一个函数处理的,returns如果捕获组在模式中定义,则只捕获捕获的子字符串。

对于您的情况,您可以简单地将非消耗模式部分转换为消耗模式:

KeyOne:([0-9]+)\|
KeyOne:([0-9]+)

请注意,如果您只想在数字后面有 | 个字符时进行匹配,则只需要在末尾添加 \|