javascript正则表达式映射到不同的组中



我正试图为下面的文本创建一个正则表达式

[2021-11-15 23:43:41.867] INFO    [Mule-util]nz.co.ha.mule.common.logging.CustomMessageLogger [[MuleRuntime].uber.02: [sample-logging-app].sample-logging-appFlow.CPU_LITE @4ffd3e60]: event:dd3aa370-466d-11ec-83a1-0ab55c0b0cf4 ||transactionID=null|txnState=start|apiDomain=system|apiLayer=system|customMessage=Im%20here%20at%202021-11-15%2023:43:41.866|direction=incoming|messageName=sample-loggin-app|messageType=sample-loggin-app|name=main|payloadIn=false||

这一次我有5组,但第四组应该分为2组,所以我总共应该有6组,如下

第1组:[2021-11-15 23:43:41.867]

第2组:信息

第3组:[Mule-util]abc.co.common.logging.CustomMessageLogger

第4组:[[MuleRuntime].uber.02:[sample-logging-appFlow.CPU_LITE@4fd3e60]:事件:

第5组:dd3aa370-466d-11ec-83a1-0ab55c0b0cf4

组-6:||transactionID=null |txnState=start|apiDomain=system|apiLayer=system|customMessage=Im%20here%20at%202021-11-15%2023:43:41.866| direction=incoming|messageName=sample loggin app|messageType=sample log gin app|name=main|payloadIn=false||

注:上述分组是预期的划分,因此目前第4组也持有第5组的值。有人能告诉我如何将小组一分为二吗?Regex Link可以在这里找到

我想要的原因是我试图使用sema-text logagent,它将每个组的值分配给一个变量。我不能修改现有的功能来从上面的组中读取部分有效负载,因为它目前正被其他系统使用。因此,我能做的唯一方法是通过regex将其划分为多个组,并分配给提供的一些字段。

我的代码:

var myString = "[2021-11-15 23:43:41.867] INFO    [Mule-util]nz.co.ha.mule.common.logging.CustomMessageLogger [[MuleRuntime].uber.02: [sample-logging-app].sample-logging-appFlow.CPU_LITE @4ffd3e60]: event:dd3aa370-466d-11ec-83a1-0ab55c0b0cf4 ||transactionID=null|txnState=start|apiDomain=system|apiLayer=system|customMessage=Im%20here%20at%202021-11-15%2023:43:41.866|direction=incoming|messageName=sample-loggin-app|messageType=sample-loggin-app|name=main|payloadIn=false||";
var myRegexpStr = /^([[0-9]{4}-[0-9]{2}-[0-9]{2}s[0-9]{2}:[0-9]{2}:[0-9]{2}[.][0-9]{3}])s([A-Z]*)s*([a-zA-z[].0-9:-]*)s([0-9a-zA-Z@[].s-_:]*)?([s|S]+)/g;
var myRegexp = new RegExp(myRegexpStr);
var match = myRegexp.exec(myString);
console.log(match[1]); // [2021-11-15 23:43:41.867]
console.log(match[2]); // INFO
console.log(match[3]); // [Mule-util]nz.co.ha.mule.common.logging.CustomMessageLogger
console.log(match[4]); // [[MuleRuntime].uber.02: [sample-logging-app].sample-logging-appFlow.CPU_LITE @4ffd3e60]: event:dd3aa370-466d-11ec-83a1-0ab55c0b0cf4
console.log(match[5]); // ||transactionID=null|txnState=start|apiDomain=system|apiLayer=system|customMessage=Im%20here%20at%202021-11-15%2023:43:41.866|direction=incoming|messageName=sample-loggin-app|messageType=sample-loggin-app|name=main|payloadIn=false||

有很多方法可以实现这一点。一个可能的解决方案看起来像

^([d{4}-d{2}-d{2}sd{2}:d{2}:d{2}.d{3}])s+([A-Z]*)s+([a-zA-Z0-9[].:-]*)s+([w@[].s:-]*:)([a-fA-F0-9]{4}(?:[a-fA-F0-9]{4}-){4}[a-fA-F0-9]{12})s+([sS]*)$

请参阅regex演示。

主要部分是([w@[].s:-]*:)([a-fA-F0-9]{4}(?:[a-fA-F0-9]{4}-){4}[a-fA-F0-9]{12}):

  • ([w@[].s:-]*:)-第4组:零个或多个字、@[].:-和空白字符,然后是一个:字符
  • ([a-fA-F0-9]{4}(?:[a-fA-F0-9]{4}-){4}[a-fA-F0-9]{12})-第5组:UUID模式

相关内容

  • 没有找到相关文章

最新更新