首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在标题标记之后首先提取<p></p>的正则表达式(C#风格)

在标题标记之后首先提取<p></p>的正则表达式(C#风格)
EN

Stack Overflow用户
提问于 2009-05-06 22:29:54
回答 4查看 3.3K关注 0票数 0

我几乎完成了我的网站的trackback系统,但还有最后一个琐碎的正则表达式,我就是搞不懂。

我想要的是引用页面的摘录,在那里我将最相关的摘录定义为:

页面的HTML源中<h1></h1><h2></h2><h3></h3>后面的第一段(由<p></p>标记标记)。

例如,我可以成功获取HTML的<title></title>标记,如下所示:

代码语言:javascript
复制
Regex reTITLE = new Regex( @"(?<=<title.*>)([\s\S]*)(?=</title>)",
RegexOptions.IgnoreCase );

Match match = reTITLE.Match( strHTMLSource );
if (match.Success)
    {
        strReferringPageTitle = match.Value.Trim( );
    }

我的问题--我可以使用什么正则表达式来获取我的帖子的第一部分中描述的字符串?

附言:我爱StackOverflow和这个社区--干得好,乔尔公司!

EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2009-05-06 22:38:09

代码语言:javascript
复制
Match m = Regex.Match(strHTMLSource, "^.*?</h[123]>.*?<p>(.*?)</p>",
    RegexOptions.Compiled | RegexOptions.IgnoreCase);

string para = m.Success ? m.Groups[1].Value.Trim() : string.Empty;
票数 2
EN

Stack Overflow用户

发布于 2009-05-06 23:04:46

就我个人而言,我会使用XPath查询来实现您正在尝试实现的目标,这比摆弄正则表达式要容易得多。

票数 1
EN

Stack Overflow用户

发布于 2009-05-06 22:47:55

此正则表达式将查找h1、h2或h3之后的所有第一个段落。如果你只想要页面上的第一段,只需要保持第一段匹配。

代码语言:javascript
复制
(?<=</h[1-3]>\s*?<p>)([\s\S]*?)(?=</p>)

您可能需要调整<p>标记的匹配项以考虑属性。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/832116

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档