regex - 将捕获组命名为不同的名称
问题描述
我正在开发基于 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+))$
请参阅正则表达式演示。
推荐阅读
- javascript - 使用 vue-async-computed 在计算属性中的循环内使用异步 API 调用
- javascript - 获取兄弟参数的类型
- python - 将垂直滚动条添加到嵌入式 matplotlib 画布,同时保持其水平大小占据整个 QScrollArea
- git-submodules - Git 扩展:如何与子模块取消“同步”
- css - 如何在 Create React App 中使用 CSS 模块覆盖 Bootstrap 样式
- c++ - 如何打印 gsl::vector 的元素?
- vue.js - Vue - 删除子对象后迭代对象
- c++ - 通过引用传递数组 C++
- c# - 如何解决此构建问题?MSBuild 错误:MSB4216
- python - Airflow Variable.set() 违反唯一键约束