我正在寻找与我的正则表达式匹配的行。
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”]。值,但我不知道如何在这里实现它。
答案 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"] });