Regex.Matches类型' System.ArgumentException'的异常

时间:2014-06-10 13:51:49

标签: c# asp.net regex asp.net-mvc

尝试将我在字符串中找到的匹配项放入DataTable:

DataTable dtListVar = new DataTable();

string pattern = @"\[([^\[\]]+)\]";

string inputText = "Find string inside brackets [C#.net] and [Vb.net] example.";

foreach (Match m in Regex.Matches(inputText, pattern))
{
    DataRow dr = dtListVar.NewRow();
        dr["Var"] = m.Value.Replace('[', ' ').Replace(']', ' ');
        dr["Value"] = "";
        dtListVariables.Rows.Add(dr);
}

我找到了元素,但是当我想要分配给DataRow时,我有这个例外:

  

类型' System.ArgumentException'的第一次机会异常。发生了   在System.Data.dll

4 个答案:

答案 0 :(得分:0)

您的例外与正则表达式无关。您的异常消息来自System.Data,而不是System.Text.RegularExpression

您正在创建一个空的DataTable,然后将数据分配给尚不存在的列。在尝试为其分配数据之前,您需要define the schema of the data table

答案 1 :(得分:0)

我想你应该声明列Var和值:

        DataTable dtListVar = new DataTable();
        dtListVar.Columns.Add("Var");
        dtListVar.Columns.Add("Value");

并在最后一行使用 dtListVar 而不是 dtListVariables

顺便说一下,我会在这里使用一个对象而不是dataTable。

答案 2 :(得分:0)

使用此:

var row = dtListVar.NewRow();
dtListVar.Rows.Add(row);
...

答案 3 :(得分:-3)

模式错误。 " ["不能进入另一个" ["。 试试" [(。*)]"。