小编Ice*_*u90的帖子

正则表达式减慢了程序

我正在尝试创建一个程序来解析游戏聊天记录中的数据.到目前为止,我已经设法让程序工作并解析我想要的数据,但问题是程序变慢了.

目前解析一个10MB的文本文件需要5秒钟,如果我将RegexOptions.Compiled添加到我的正则表达式,我注意到它下降到3秒.

我相信我已经在我的正则表达式匹配中找到了问题.由于5个正则表达式,当前读取了一行5次,因此当我稍后添加更多时,程序会变得更慢.

我应该怎么做才能使我的程序不会因多个正则表达式而减速?所有建议,使代码更好的表示赞赏!

if (sender.Equals(ButtonParse))
        {
            var totalShots = 0f;
            var totalHits = 0f;
            var misses = 0;
            var crits = 0;

            var regDmg = new Regex(@"(?<=\bSystem\b.* You inflicted )\d+.\d", RegexOptions.Compiled);
            var regMiss = new Regex(@"(?<=\bSystem\b.* Target evaded attack)", RegexOptions.Compiled);
            var regCrit = new Regex(@"(?<=\bSystem\b.* Critical hit - additional damage)", RegexOptions.Compiled);
            var regHeal = new Regex(@"(?<=\bSystem\b.* You healed yourself )\d+.\d", RegexOptions.Compiled);
            var regDmgrec = new Regex(@"(?<=\bSystem\b.* You take )\d+.\d", RegexOptions.Compiled);

            var dmgList = new List<float>(); //New list for damage …
Run Code Online (Sandbox Code Playgroud)

c# regex parsing

5
推荐指数
1
解决办法
163
查看次数

标签 统计

c# ×1

parsing ×1

regex ×1