使用Regex从标题列表中提取软件

时间:2017-11-06 17:01:18

标签: c# .net regex

我有一个漏洞标题列表,需要从这些标题中提取特定的软件名称。我想写一个方法,我传递一个标题,一个正则表达式,然后返回该标题中的匹配软件列表。例如,我可以传递标题:

Mozilla Thunderbird Remote Code Execution / SeaMonkey RANDOM Firefox MORE TEXT Thunderbird

和正则表达式如:

^Mozilla.*(Firefox|Thunderbird|SeaMonkey)

我想要返回的方法;

['Thunderbird', 'SeaMonkey', 'Firefox', 'Thunderbird'].

另一个例子,我可以传入

Amazing Microsoft Office Word and Excel RCE

我的正则表达式可能看起来像;

.*Microsoft.*(Word|Excel)+

我想要返回的方法;

['Word', 'Excel']

标题并不总是统一的。

我一直无法使用正则表达式和组/捕获代码来捕获完整的软件列表。这是我到目前为止在C#中所拥有的(标题和正则表达式目前是硬编码的故障排除)

        string title = "Mozilla Thunderbird Remote Code Execution / SeaMonkey RANDOM Firefox MORE TEXT Thunderbird";
        string pattern = @"^Mozilla.*(Firefox|Thunderbird|SeaMonkey)";

        Match match = Regex.Match(title, pattern);
        if (match.Success)
        {
            Console.WriteLine("Matched text: {0}", match.Value);
            for (int ctr = 1; ctr < match.Groups.Count; ctr++)
            {
                Console.WriteLine("   Group {0}:  {1}", ctr, match.Groups[ctr].Value);
                int captureCtr = 0;
                foreach (Capture capture in match.Groups[ctr].Captures)
                {
                    Console.WriteLine("      Capture {0}: {1}",
                                      captureCtr, capture.Value);
                    captureCtr++;
                }
            }
        }

哪些输出;

Matched text: Mozilla Thunderbird RANDOM TEXT SeaMonkey MORE RANDOM TEXT Firefox  MORE TEXT Thunderbird
Group 1:  Thunderbird    
Capture 0: Thunderbird

如何修改我的代码/正则表达式以提取每个标题的完整软件列表?

0 个答案:

没有答案