【问题标题】:Regular Expression Guidance正则表达式指导
【发布时间】:2015-02-19 01:02:36
【问题描述】:

我正在处理一个C# 项目。

我有这样的数据(csv 格式):

error01="BRE126:Invalid token found.",error02="BRE103:Access has been denied.",error03="BRE102:User must be logged on., info01="some info",warn01="some warning"

我想解析数据并生成错误、信息和警告列表。

正则表达式如何查找它们? 有没有更好的办法?

编辑:就获取 MatchCollection 并使用它而言,我知道该怎么做,我真的只需要表达式方面的帮助。

【问题讨论】:

  • 使用属性文件代替 csv 怎么样?所以它会像code=description
  • 遗憾的是,这部分不在我的控制范围内,我看到的是来自第三方 restful api 的 csv 格式数据。
  • 好的,您需要什么数据或需要采取什么行动?行中的列数是否固定?
  • 没有固定的列,可以是任意数量的错误、信息或警告。到目前为止,我有 error[0-9][0-9]="[^"\r\n]*" 错误,我想我可以分两步处理它,但也许只搜索会很好原文3次,每次分别取error、warn和info引号之间的数据。
  • 不确定如何准确使用数据。一种方法是用逗号解析行拆分,然后在有帮助的情况下通过相等的 add as 属性拆分。

标签: c# regex parsing


【解决方案1】:
var dict = Regex.Matches(text, @"(.+?)=\""(.+?)\""[, $]*")
                .Cast<Match>()
                .ToDictionary(m => m.Groups[1].Value, m => m.Groups[2].Value);

【讨论】:

  • 没关系,我可以使用 (.+?)="(.+?)" 并解决问题。谢谢
猜你喜欢
  • 1970-01-01
  • 2022-07-22
  • 1970-01-01
  • 2015-12-29
  • 1970-01-01
  • 1970-01-01
  • 2011-09-16
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多