C# 用正则表达式解析电影标题
我有3个字符串,如果可以在一个正则表达式中提取电影标题C# 用正则表达式解析电影标题,c#,.net,regex,imdb,C#,.net,Regex,Imdb,我有3个字符串,如果可以在一个正则表达式中提取电影标题 <title>Airplane! (1980)</title> <title>"24" (2001)</title> <title>"Agents of S.H.I.E.L.D." The Magical Place (2014)</title> 飞机!(1980) &
<title>Airplane! (1980)</title>
<title>"24" (2001)</title>
<title>"Agents of S.H.I.E.L.D." The Magical Place (2014)</title>
飞机!(1980)
";24";(2001)
";S.H.I.E.L.D.和#x22的代理人;神奇的地方(2014)
到目前为止,我最好的一张照片是:
<title>(")?(.*?)(")?.*?\((\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;
}
}