0

我的标题结构是这样的:

<title>WebsiteName | Page title | Slogan</title>

目前,在 C# 中,我使用它来获取标题:

Regex.Match(pageSource,
                @"\<title\b[^>]*\>\s*(?<Title>[\s\S]*?)\</title\>",
                RegexOptions.IgnoreCase).Groups["Title"].Value;

但是,我想得到的只是页面标题。

4

3 回答 3

3

避免使用regex.

您可以使用htmlAgilityPack


这将获得 html 的标题!

HtmlDocument doc = new HtmlDocument();
doc.Load(yourStream);    
string title=doc.DocumentNode.SelectSingleNode("//title").InnerText;

现在获取页面标题后,您可以使用此正则表达式获取所需的数据

考虑到您的标题始终与您可以使用的示例中给出的形式相同

(?<=\|).+?(?=\|)
于 2013-05-08T17:49:20.037 回答
2

如果你只是想得到Page Title然后试试这个:

\|(.*)\|

如果您传递您提供的字符串,您的第二个匹配项将包含标题。如果您发现自己在做比这更复杂的事情,那么正则表达式可能不是您的工具。有更好的方法来解析 HTML。

于 2013-05-08T17:47:52.907 回答
1

尝试这个:

@"\<title[^>]*\>[^|]*\|\s*(?<Title>[^|]*?)\|[^<]*\</title\>"

"\<title[^>]*\>"   //Title tag
"[^|]*"            //Everything up to the first pipe
"\|\s*"            //First pipe and any leading white space
"(?<Title>[^|]*?)" //The page title section between the pipes
"\|"               //Second pipe
"[^<]*\"           //Everything after the first pipe up to closing title tag
"</title\>"        //closing title tag
于 2013-05-08T17:54:42.707 回答