如何设置Regex以提取从ERROR开始并以INFO或DEBUG或WARN忽略换行符结束的字符串。 日志样本:
错误2017/12/12 00:11:34.352错误:{0} System.Reflection.TargetInvocationException:调用目标引发了异常。 ---> OutboundServiceSoftFailureException:对聚合服务执行请求失败:未将对象引用设置为对象的实例。 在ProxyAggregationService.Execute [T](ILog日志,请求请求) at ResetChangeRequestForMAF(String mafGuid,String senderCode) at HandleImpl(CleanupWorkbookRequest request) 在UnitRequestHandler`1.Handle(TRequest请求) 在ExecuteInternal [TRequest,TResponse](TRequest请求) ---内部异常堆栈跟踪结束--- at System.RuntimeMethodHandle.InvokeMethod(Object target,Object [] arguments,Signature sig,Boolean constructor) at System.Reflection.RuntimeMethodInfo.UnsafeInvokeInternal(Object obj,Object [] parameters,Object [] arguments) 在System.Reflection.RuntimeMethodInfo.Invoke(Object obj,BindingFlags invokeAttr,Binder binder,Object []参数,CultureInfo文化) 在ExecuteUnknown(对象请求) 在InvokeMethodOnTarget() 在CProceed() 在拦截(IInvocation调用) 在AbstractInvocation.Proceed() 在拦截(IInvocation调用) 在AbstractInvocation.Proceed() 在拦截(IInvocation invocation)
DEBUG 2017/12/12 00:11:35.300进程进入等等等等。
WARN 2017/12/12 00:11:37.300某些流程可能出现问题
试过这个 - 没有成功
Regex r = new Regex(@"(ERROR.*?((?:2|1)\\d{3}(?:-|\\/)(?:(?:0[1-9])|(?:1[0-2]))(?:-|\\/)(?:(?:0[1-9])|(?:[1-2][0-9])|(?:3[0-1]))(?:T|\\s)(?:(?:[0-1][0-9])|(?:2[0-3])):(?:[0-5][0-9]):(?:[0-5][0-9])))(.*)");
答案 0 :(得分:0)
我认为你可以使用positive lookahead直到你遇到INFO或DEBUG或WARN。
ERROR[\S\s]*?(?=\s+INFO|DEBUG|WARN)
ERROR
[\S\s]*
(?=
\s+
INFO|DEBUG|WARN
)
Regex r = new Regex(@"ERROR[\S\s]*?(?=\s+INFO|DEBUG|WARN)");