C#将正则表达式匹配插入数据表中

时间:2013-07-24 07:15:17

标签: c# regex winforms visual-studio-2010

我正在寻找与我的正则表达式匹配的行。

var dataTable = new DataTable();
foreach (var columnName in new[] { "Category", "Device", "Data Type", "Value", "Status" })
dataTable.Columns.Add(columnName);

Regex regex = new Regex(@"^(?:(?<C0>Put) (?<C1>\S+) (?<C2>\S+) (?<C3>\S+) (?<C4>\S+))$");

var matches = lines.Select(line => regex.Match(line));

foreach (var match in matches)dataTable.Rows.Add(match.Groups.Cast<Group>().Skip(1).ToArray());

我的输入

Put this inside datatable spec

现在它将所有匹配放在数据表中,但按正常顺序排列。我想能够指定放置每个单词的列。例如,我希望能够在“值”列中添加“this”等字样,依此类推。

我从上一个主题(String separation C#)知道我可以指定某种方式匹配。组[“C0”]。值,但我不知道如何在这里实现它。

1 个答案:

答案 0 :(得分:2)

您可以先创建一个包含所需顺序元素的列表,然后将其转换为数组,从而创建自己的订单。

  dataTable.Rows.Add((new List<Group>{match.Groups["C0"], match.Groups["C1"]}).ToArray());

您可以省略List&lt;&gt;通过直接创建一个Group数组 - 这也适用:

  dataTable.Rows.Add(new Group[] { match.Groups["C1"], match.Groups["C0"] });