以下是我的文字示例:
[10:24:33.361][RestApi.RestEngine
ERROR GET
process-meter/util/verify
Status code Forbidden
Content {"versions":1}
]
时间部分:
[10:24:33.361]
很容易:
(\[\d{2}:\d{2}:\d{2}\.\d{3}\])
我需要帮助的是正则表达式,以匹配时间后的字符串,用括号分隔,并在其中包含新行
所以我编辑了这个问题,把它放回到“新行”正则表达式问题......解决方法是重新编写日志记录对象,将输出放在一行或者像Mike Robinson建议的那样,使用预解析器,然后使用正则表达式。
请将此标记为已关闭。
答案 0 :(得分:2)
使用MediaRecorder.stop()
RegexOptions.MultiLine
这里有关于它的作用的文档:
var match = Regex.Match("myInputStr", "my pattern", RegexOptions.Multiline);
答案 1 :(得分:1)
我相信这就是诀窍:
var pattern = @"(\[\d{2}:\d{2}:\d{2}\.\d{3}\])(\[[\s\S]*\])";
var matches = Regex.Matches(input, pattern);
var group = matches.Count > 0 ? matches[0].Groups[2] : null; // group == null if the input isn't a match for the pattern.
这是group.Value
:
[RestApi.RestEngine
ERROR
GET process-meter/util/verify
Status code Forbidden
Content {"versions":[1]}
]
答案 2 :(得分:1)
当然,所有优秀的答案,但......另外......
"当你漫步在这条樱草花路径上时,"请记住两件重要的事情:
在这种情况下,我退后一步,考虑awk
实用程序采用的一般方法,该方法首先对文件中的各行进行分类,然后根据"键入"执行某些操作。线被认可。即使有问题的文件似乎包含一个"更多嵌套," vs。"严格逐行"结构,也许这次你可以逐步采用逐行策略。
要在awk
以外的工具中模拟相同的逻辑,您将首先使用正则表达式决定"您拥有什么样的源代码行,&# 34;然后你调用一个特定于那种行的子程序。
但是,最后,"有时你实际上需要一个解析器。"