首页 > 解决方案 > 用于排除捕获组的正则表达式

问题描述

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

这是我正在搜索的行。我只需要提取[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=部分。我正在考虑这样做,所以我需要使用嵌套子组?

标签: regexregex-group

解决方案


您可以简单地在 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);


推荐阅读