我需要解析日志文件中的大量数据,理想情况下,我可以将文件拆分为一个列表,其中列表中的每个条目都是日志中的单个条目。
每次创建日志条目时,都会在该模式后面加上字符串前缀:
“ 4404:21:42:07.433-在此之后,可能有任何内容(包括换行符等)。但是,只要前缀重复出现,就表示有新的日志条目。”
4404可以是任何数字,但始终后跟一个:。 21:42:07.433是21小时42分7秒433毫秒。
我对正则表达式了解不多,但是可以使用它来识别这种模式吗?
我认为类似的方法会起作用...
“ *:[0-24]:[0:60]:[0:60]。[0-1000]-*”
但是,它只会引发异常,我担心我根本就走错了轨道。
List<string> split_content = Regex.Matches(file_content, @"*: [0-24]:[0:60]:[0:60].[0-1000] - *").Cast<Match>().Select(m => m.Value).ToList();
答案 0 :(得分:1)
以下表达式将根据您的模式拆分字符串:
\d+: \d{2}:\d{2}:\d{2}\.\d{3}
如果定界字符串始终以行开头(并在正则表达式中使用^
标志),请在开头添加m
。使用正则表达式捕获日志块会更加复杂,如果您一次将日志内容全部存储在内存中,我建议您仅拆分(使用Regex.Split
)。