有什么办法可以有一个字面的“。”以名为捕获组的正则表达式的名称?

问题描述 投票:0回答:1

我正在做一些正则表达式,它将在OpenTelemetry Collector内针对日志数据运行,其中我需要命名捕获组从日志中提取数据组。

我想遵守围绕流程的开放遥测语义约定。但这些语义约定要求使用“.”。作为分隔符 - 例如“process.command”、“process.executable.name”等。

这就是我遇到困难的地方...... RegEx101 似乎不喜欢有一个“。”在一个命名的捕获组中,根据我自己的经验,这是一个可靠的工具,所以我倾向于相信它。

有办法允许这样做吗?

正则表达式示例:

^(?P<process.executable.name>[^\[\]]+)\[?(?P<process.pid>\d+)?\]?$

带点的示例(不起作用):

请注意,用“\”转义点是行不通的 - 已经尝试过了。

为了证明正则表达式本身确实可以在没有断点的情况下工作,使用下划线而不是点:

regex go regex-group open-telemetry open-telemetry-collector
1个回答
0
投票

正如您在 go 代码中看到的那样这里

// isValidCaptureName reports whether name
// is a valid capture name: [A-Za-z0-9_]+.
// PCRE limits names to 32 bytes.
// Python rejects names starting with digits.
// We don't enforce either of those.

因此捕获名称中不允许使用点

但是您可以使用类似

process_executable_name
的内容。

© www.soinside.com 2019 - 2024. All rights reserved.