使用正则获取文章摘要

在想如何获取文章摘要的时候,有若干个想法,
第一,在获取到文章后,直接截取前100个字符,但因为是富文本,存在数据库时有很多html标签,如果前一百个截断了html怎么办?或者去掉所有html标签再截取,但就失去了文本格式;
第二,在数据库中文章表中添加一个摘要字段,如果写文章时候不修改,那么就默认为第一段或者前多少个字,当然也可以手动修改,但是非常不想用这样方法。

之后,在网上看到别人想法,使用第一个<p></p>标签中的文字作为摘要。而且正常第一段文字的确是大部分技术类博客的主要内容。

第一想法就是使用正则,来找到第一个<p>,但是<p>里面可能会有张<img> 这不是我们想要的摘要,所以我们需要过滤掉<img>,边学边用正则,起初脑子里一直盯着^这个字符(取反),比如这样^(<img),或者(^<img),当然都是不对的,应当使用前瞻,我要匹配<p>且下一个字符不是<img>的,中间任意,最后以</p>结尾.

(?=exp) 匹配exp前面的位置
(?<=exp) 匹配exp后面的位置
(?!exp) 匹配后面跟的不是exp的位置
(?<!exp) 匹配前面不是exp的位置

直接给出代码

private String getDigest(String content){
//正则筛选第一个文字<p>
Pattern datePattern = Pattern.compile("<p>((?!<img).)*?<\\/p>");
Matcher dateMatcher = datePattern.matcher(content);
if(dateMatcher.find()) {
return dateMatcher.group(); //返回第一个<p>
}else
{
return "null";
}
}