将捕获组命名为不同的名称
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。
我正在开发一个基于 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。