[英]C# / RegEx - How can I improve my RegEx expression?
我对我的 RegEx 代码有疑问。 我的情况是,我有大约 700 个文本文件,我在我的工具中导入这些文件,有时需要不到一秒钟,有时甚至需要 7 秒钟。
所以我分析了我的工具,它说
File.ReadAllLines<\/code>和我的 RegEx 花费的时间最多。所以也许一些 RegEx 专业人士可以帮助我并教我如何改进我的 RegEx 表达。
这是我的代码:
var entries = new List<SomeModelObject>();
try
{
var allLines = File.ReadAllLines(filepath, Encoding.Default);
var isHashCollected = false;
// main pattern
var pattern = @"[a-zA-Z<>:_]+\s+SYMBOL:\s(?<var>\w+)(|\s+)=\s(?<value>\W\w+|\w+)\s;\s\/\/(?<comment>.*)";
Match match;
Regex regex = new Regex(pattern,
RegexOptions.Singleline);
var secondPattern = @"<0:64:0>[\w\s;]+\/\/\s(?<second>\w+)";
Regex regexSecondPattern = new Regex(secondPattern , RegexOptions.Singleline);
var thirdPattern = @"<@\(#\)(?<third>\w+)";
Regex regexThirdPattern = new Regex(thirdPattern , RegexOptions.Singleline);
foreach (var line in allLines)
{
if (!isHashCollected)
{
isHashCollected = GetHash(regexThirdPattern.Match(line), isHashCollected);
}
match = regex.Match(line);
if (match.Success)
{
// get entries
var someModelObject= new SomeModelObject();
someModelObject.projCase = match.Groups["var"].Value;
someModelObject.projValue = match.Groups["value"].Value;
someModelObject.projComment = match.Groups["comment"].Value;
entries.Add(someModelObject);
continue;
}
GetSecondHash(regexSecondPattern.Match(line));
}
return entries;
}
catch (Exception e)
{
return new List<SomeModelObject>();
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.