如何使用c#对下面的文本进行模式匹配?

如何使用c#对下面的文本进行模式匹配?,c#,arrays,string,string-function,C#,Arrays,String,String Function,如何进行模式匹配、分离特定字段并提取数据?请阅读。你尝试过什么,失败在哪里?您想要所有字段还是只需要特定字段?这些文本在所有字段都存在的情况下是否总是完全相同的格式?如果您使用结构化日志框架,您可能不会遇到编写日志解析器的问题,如果消息不使用空格作为字段分隔符,那么编写日志解析器会容易得多。假设作为分隔符,类似于(?*?):(?*?)的正则表达式无法捕获所有键值对。JSON字符串会更好。这就是为什么像Serilog这样的结构化日志框架更可取的原因——它已经做到了开箱即用,将数据以可解析的形式存储

如何进行模式匹配、分离特定字段并提取数据?

请阅读。你尝试过什么,失败在哪里?您想要所有字段还是只需要特定字段?这些文本在所有字段都存在的情况下是否总是完全相同的格式?如果您使用结构化日志框架,您可能不会遇到编写日志解析器的问题,如果消息不使用空格作为字段分隔符,那么编写日志解析器会容易得多。假设
作为分隔符,类似于
(?*?):(?*?)的正则表达式无法捕获所有键值对。JSON字符串会更好。这就是为什么像Serilog这样的结构化日志框架更可取的原因——它已经做到了开箱即用,将数据以可解析的形式存储在消息中。最佳选择取决于您打算使用什么来分析日志。Elastic和所有日志解析器都有特定格式的解析模板。结构化日志格式(如)都易于阅读和解析。有无数的工具可以解析、查看或查询这种格式。开发人员必须遵守足够的纪律,提前指定可用字段并使用该格式,而不是转储非结构化消息。如果消息字段是唯一允许包含空格的字段,并且最后出现,则当前格式本身可以得到改进。使用制表符而不是空格作为分隔符也是一个好主意。
String text = "time : 11/22/2019 10:22:22 AM Message: db connection failed. Catergory: debug Priority: 2 EventId: 5 process Id: 12 process name: exe.win32"