我正在使用openXML,并试图通过excel文件循环查看是否有任何内容与特定模式匹配。我的正则表达式模式为@"(?<!\w)#\w+"
。这应该返回任何以“#
”开头的内容。在我的Excel工作簿xml中有一些以“#
”开头的定义名称,例如<definedName name="_KEY" hidden="1" localSheetId="3">#REF!</definedName>
。但是,当我尝试查找定义的名称时,我的计数返回为零。正则表达式遍历foreach以查找某种模式
我的代码休耕
首先我浏览文件,并选择该文件。我确信,这是完美的。
然后,我尝试做一个计数,并循环通过每场比赛,它在这里我有我的问题。我假设我搞乱了我的foreach
循环,我真的需要一些指导。
var spreadsheet = DocumentFormat.OpenXml.Packaging.SpreadsheetDocument.Open(filePath, false);
var workbook = spreadsheet.WorkbookPart;
var names = workbook.Workbook.DefinedNames;
//result.InactiveNamedRangeCount = names.Where(n => n.InnerText.Contains(pattern)).Count();
foreach (Match match in Regex.Matches(names.ToString(), @"(?<!\w)#\w+"))
{
result.InactiveNamedRangeCount = names.Where(n => n.InnerText.Contains(match.ToString())).Count();
}
你不应该使用正则表达式解析XML或HTML。使用正确的工具。您可以使用System.Xml库或System.Xml.Linq库。 – jdweng