将捕获组命名为不同的名称

Named capturing group to different names

我正在开发一个基于 Banzai Cloud ClusterFlow 的日志堆栈,我们有一个日志当前使用正则表达式解析并以特定名称放置;但是我们想弃用该名称并用一个新名称替换它,假设模式就像下面的一样:

^(?<someName>[^ ]*) (?<someNameWeWishToDeprecate>[^ ]*)$

假设我们收到这样的日志行

prop1 prop2

它将在我们解析的日志中产生两个属性:

someName=prop1
someNameWeWishToDeprecate=prop2

我们想要得到的反而是

someName=prop1
someNameWeWishToDeprecate=prop2
someNewFancyNae=prop2

如您所见,我们希望在保留旧名称的同时使用新名称;这可以通过详细说明正则表达式来实现吗?

仅供参考:正则表达式引擎基于 ruby

您可以嵌套命名的捕获组并使用

^(?<someName>[^ ]*) (?<someNewFancyNae>(?<someNameWeWishToDeprecate>[^ ]*))$

或者,

^(?<someName>\S+)\s+(?<someNewFancyNae>(?<someNameWeWishToDeprecate>\S+))$

参见regex demo