我有一个漏洞标题列表,需要从这些标题中提取特定的软件名称。我想写一个方法,我传递一个标题,一个正则表达式,然后返回该标题中的匹配软件列表。例如,我可以传递标题:
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
如何修改我的代码/正则表达式以提取每个标题的完整软件列表?