我有一个包含大量正则表达式搜索模式的XML文件:
<Data>
<Expression>Error removing log\. Error: 5</Expression>
</Data>
<Data>
<Expression>Unable to open file C:\\Documents\\Stuff\\Message\.txt</Expression>
</Data>
如您所见,表达式已在我的XML文件中正确转义。问题是,当我将文件反序列化为字符串列表然后尝试将字符串用作正则表达式模式时,我注意到它们已被再次转义。例如,上面的第一个表达式被读作:
"Error removing log\\. Error: 5"
然后,该模式无法在我正在搜索的文件中找到任何匹配项。
有没有办法从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
}
答案 0 :(得分:0)
这就是我所做的,我没有看到表达式再次被转义。
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);
}