可以使用正则表达式找到此模式吗?

时间:2019-07-01 14:13:04

标签: regex

我需要解析日志文件中的大量数据,理想情况下,我可以将文件拆分为一个列表,其中列表中的每个条目都是日志中的单个条目。

每次创建日志条目时,都会在该模式后面加上字符串前缀:

“ 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();

1 个答案:

答案 0 :(得分:1)

以下表达式将根据您的模式拆分字符串:

\d+: \d{2}:\d{2}:\d{2}\.\d{3}

如果定界字符串始终以行开头(并在正则表达式中使用^标志),请在开头添加m。使用正则表达式捕获日志块会更加复杂,如果您一次将日志内容全部存储在内存中,我建议您仅拆分(使用Regex.Split)。