我想知道,在StringBuilder中存储的大型文本文档上运行多个正则表达式模式的最合适方法是什么。
目前我这样做的方法就是创建一个新的Regex实例并单独运行每个模式,这在效率,资源和时间方面都不合适。
文本文档的平均值约为3k +行,模式的数量将为20 +。
所要求的代码:
byte[] buffer = new byte[524288];
long readSoFar = 0;
using (System.IO.Stream stream = fileInfo1.OpenRead)
{
while (stream.Position < stream.Length)
{
int read = await stream.ReadAsync(buffer, 0, buffer.Length);
readSoFar += read;
for (int bi = 0; bi < buffer.Length; bi++)
{
if (buffer[bi] == 0)
{
buffer[bi] = 63;
}
}
result1.Append(System.Text.Encoding.ASCII.GetString(buffer, 0, read));
}
}
Regex regx = new Regex("Pattern", RegexOptions.IgnoreCase);
MatchCollection matches = regx.Matches(LoadedFile.ToString());
foreach (Match match in matches)
{
}
(我基本上逐渐在缓冲区下加载文本文档 - &gt;等到整个文件加载完毕 - >运行正则表达式检查)