正则表达式使用 *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]+)
请注意,如果您只想在数字后面有 |
个字符时进行匹配,则只需要在末尾添加 \|
。
GCP 日志记录(基于日志的指标)正则表达式要求我只为我的正则表达式过滤器使用 1 个捕获组,因此,我无法使用我喜欢的前瞻和后视。如何获取KeyOne:
之后的号码?
日志: KeyOne:32|KeyTwo:0|KeyThree:|Language:english
需要捕获:32
如果允许我使用多个捕获组,这将有效:(?<=KeyOne:)([0-9]+)(?=|)
有没有办法用一个捕获组来做到这一点?
你想做的事情可以用一个没有环顾四周的捕获组来完成,因为正则表达式是用一个函数处理的,returns如果捕获组在模式中定义,则只捕获捕获的子字符串。
对于您的情况,您可以简单地将非消耗模式部分转换为消耗模式:
KeyOne:([0-9]+)\|
KeyOne:([0-9]+)
请注意,如果您只想在数字后面有 |
个字符时进行匹配,则只需要在末尾添加 \|
。