Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/regex/16.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 从XML文件读取正则表达式模式_C#_Regex_Xml - Fatal编程技术网

C# 从XML文件读取正则表达式模式

C# 从XML文件读取正则表达式模式,c#,regex,xml,C#,Regex,Xml,我有一个包含大量正则表达式搜索模式的XML文件: <Data> <Expression>Error removing log\. Error: 5</Expression> </Data> <Data> <Expression>Unable to open file C:\\Documents\\Stuff\\Message\.txt</Expression> </Data> 然后,该模式

我有一个包含大量正则表达式搜索模式的XML文件:

<Data>
  <Expression>Error removing log\.  Error: 5</Expression>
</Data>
<Data>
  <Expression>Unable to open file C:\\Documents\\Stuff\\Message\.txt</Expression>
</Data>
然后,该模式在我正在搜索的文件中找不到任何匹配项

有没有一种方法可以从XML文件中读取这些表达式而不必再次转义

更改模式在XML文件中的写入方式不是一个选项,因为我无法控制该文件

编辑: 下面是我在其中使用这些正则表达式模式的代码:

    private void FindExpression(Data errorExpression)
    {
        Regex regex = new Regex(errorExpression.Expression,
                                RegexOptions.IgnoreCase,
                                TimeSpan.FromMinutes(2));
        MatchCollection errorMatches = regex.Matches(FileContents);
        // There is more stuff here, to handle if I find a match
    }

这就是我所做的,我看不到这些表达再次被漏掉

XmlDocument doc1 = new XmlDocument();
doc1.LoadXml(@"<Exps><Data>  <Expression>Error removing log\.  Error: 5</Expression></Data><Data>  <Expression>Unable to open file C:\\Documents\\Stuff\\Message\.txt</Expression></Data></Exps>");
XmlNodeList xmList = doc1.SelectNodes("/Exps/Data/Expression");
foreach (XmlNode node in xmList)
{
    Regex reg = new Regex(node.InnerText);
}

它们不是,这就是它们在调试器中显示的方式。但是我使用该模式进行搜索,它没有找到任何匹配项,尽管我在搜索的文件中看到有匹配项……日志中肯定有双空格,对吗?这些真的是正则表达式吗?它们是信息。你为什么要逃避元字符?只需使用字符串搜索函数。你说它们是“正则表达式搜索模式”。。。但在你的表达中,我看不到任何东西表明它们是正则表达式。显示您尝试将字符串用作正则表达式模式的代码。。。我想你的错误可能就在那里。
XmlDocument doc1 = new XmlDocument();
doc1.LoadXml(@"<Exps><Data>  <Expression>Error removing log\.  Error: 5</Expression></Data><Data>  <Expression>Unable to open file C:\\Documents\\Stuff\\Message\.txt</Expression></Data></Exps>");
XmlNodeList xmList = doc1.SelectNodes("/Exps/Data/Expression");
foreach (XmlNode node in xmList)
{
    Regex reg = new Regex(node.InnerText);
}