【问题标题】:RegEx for excluding a capture group用于排除捕获组的正则表达式
【发布时间】:2019-05-14 17:59:24
【问题描述】:

我已经尝试了几个小时来为此设计一个正则表达式,但没能做到。

这是我正在搜索的行。我只需要提取[Name] Action Detail 部分。

2019-05-14 11:28:08,257 [tomcat-http--12] INFO  com.my.org.SomeClass  - Usage Event: ,SomeField=null,SomeOtherField=Some value,Action=[Name] Action Detail,OtherField=null

这个正则表达式几乎给了我我需要的东西:Action=\[[^,]+。但是,我需要排除 Action= 部分。我正在考虑这样做,所以我需要使用嵌套子组?

【问题讨论】:

  • 要么使用正面的后视,要么将您想要的文本放入 group1 并从 group1 捕获 Action=(\[[^,]+)
  • 您可以使用(?<=Action=)Action=\K,但不确定您的引擎是否会解析其中的任何一个,您使用的是哪种语言?
  • @WashingtonGuedes splunk
  • ^(?:[^=\n]*=){5}(?P<Action>\[[^,]+) 似乎正在工作,但我不确定我是否理解它。谁能解释一下?
  • 根据本页splunk使用PCRE。试试Action=\K\[[^,]+regex101.com/r/ndwwrr/1

标签: regex regex-group


【解决方案1】:

您可以简单地在 Action= 周围添加一个捕获组,它会这样做:

(Action=)\[[^,]+

您还可以使用围绕所需输出的另一个捕获组对其进行扩展,以简单地提取它:

(Action=)(\[[^,]+)

正则表达式

您可以在regex101.com 中设计/修改/更改您的表达方式。

正则表达式电路

您可以在jex.im 中可视化您的表达式:

JavaScript 演示

const regex = /(Action=)(\[[^,]+)/gm;
const str = `2019-05-14 11:28:08,257 [tomcat-http--12] INFO  com.my.org.SomeClass  - Usage Event: ,SomeField=null,SomeOtherField=Some value,Action=[Name] Action Detail,OtherField=null`;
const subst = `$2`;

// The substituted value will be contained in the result variable
const result = str.replace(regex, subst);

console.log('Substitution result: ', result);

【讨论】:

  • 这是用于 splunk 中提取的字段
猜你喜欢
  • 2022-11-12
  • 1970-01-01
  • 1970-01-01
  • 2012-03-20
  • 2018-03-11
  • 1970-01-01
  • 2021-06-01
相关资源
最近更新 更多