C# 用正则表达式解析电影标题

C# 用正则表达式解析电影标题,c#,.net,regex,imdb,C#,.net,Regex,Imdb,我有3个字符串,如果可以在一个正则表达式中提取电影标题 <title>Airplane! (1980)</title> <title>&#x22;24&#x22; (2001)</title> <title>&#x22;Agents of S.H.I.E.L.D.&#x22; The Magical Place (2014)</title> 飞机!(1980) &

我有3个字符串,如果可以在一个正则表达式中提取电影标题

<title>Airplane! (1980)</title>    

<title>&#x22;24&#x22; (2001)</title>    

<title>&#x22;Agents of S.H.I.E.L.D.&#x22; The Magical Place (2014)</title>
飞机!(1980)    
";24";(2001)    
";S.H.I.E.L.D.和#x22的代理人;神奇的地方(2014)
到目前为止,我最好的一张照片是:

<title>(&#x22;)?(.*?)(&#x22;)?.*?\((\d{4})\).*?</title>
(";)?(.*)(";)?.*(\d{4}).*?
适用于“S.H.I.E.L.D.代理”和“24”但不适用于“飞机!”

我做错了什么


尽管可能不清楚正则表达式是在C程序中调用的,我使用RegEx作为行的开始=>开始标记=>可选
=>读取直到
(nnnn)

titles=System.Net.WebUtility.HtmlDecode(titles);
foreach(Regex.Matches中的匹配)(标题,
@“^\s*\s*\”“(.*?”(\”“|\(\d{4}\)”,RegexOptions.Multiline | RegexOptions.IgnoreCase))
{
如果(匹配成功)
{
字符串名称=匹配。组[1]。值;
}
}

飞机关闭标记丢失
/
为什么要使用正则表达式?XML不是一种常规语言。您应该使用XML库。或者,如果它是HTML,那么您应该像。您还应该使用而不是检索HTML。它将更容易使用,因为它返回XML而不是HTML。HTML不是一种以编程方式传递数据的格式,而是一种可视化显示内容的标记语言。然而,XML是一种公认的在应用程序之间传递数据的格式。@我并没有说这是不可能的。我说过了,尤其是当有更好的选择时。使用HTML解析器仍然需要使用RE来解析单个文本节点数据,这是这个任务的99%
titles = System.Net.WebUtility.HtmlDecode(titles);

foreach (Match match in Regex.Matches(titles, 
         @"^\s*<title>\s*\""*(.*?)(\""|\(\d{4}\))", RegexOptions.Multiline | RegexOptions.IgnoreCase))
{
    if (match.Success)
    {
        string name = match.Groups[1].Value;
    }
}