我试图为下面的文本创建一个正则表达式
[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-utilabc.co.common.logging.CustomMessageLogger
[MuleRuntime.uber.02: sample-logging-app.sample-logging-appFlow.CPU_LITE @4ffd3e60]::
dd3aa370-466d-11ec-83a1-0ab55c0b0cf4 Group-5:
第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-loggin-app|name=main|payloadIn=false||
注:以上各组均为预期分割,因此目前第4组也持有组-5值.谁能让我知道如何把这个组分成两个,Regex可以找到这里
我想要的原因是我试图使用一个sema文本日志代理,它将每个组的值分配给一个变量。我不能修改现有的功能来从上面的组读取部分有效负载,因为其他系统正在使用它。所以,我能做的唯一方法就是通过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||
发布于 2021-11-20 12:33:25
要做到这一点,有很多方法。一个可能的解决方案看起来就像
^(\[\d{4}-\d{2}-\d{2}\s\d{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+([\s\S]*)$见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组:A UUID模式。https://stackoverflow.com/questions/69982701
复制相似问题