正则匹配关键字(汉字或字母)所在的句子
大家好,我想了解怎么用正则匹配关键字(汉字或字母)所在的句子,举个例子便于大家理解:
我是中国人,我是中国人,我是中国人。我是中国人,我是
中国人,我是中国人,我是中国人。
Java
正则表达式?
------解决方案--------------------你举得例子反而让我更不理解了。。
可不可以描述详细一点?
------解决方案--------------------匹配条件就是包括“帖子”这个汉字关键字,并且以"。"开,"。"结尾是吧?
//正则提取
public static List<String> getContext2() {
//String html="kk<p>123456</p>ssss";
String html="ss。kk帖子。ss";
List<String> resultList = new ArrayList<String>();
Pattern p = Pattern.compile("。(.*?)。");//匹配<p>开头,</p>结尾的文档
Matcher m = p.matcher(html );//开始编译
while (m.find()) {
String str=m.group(1);
if(str.contains("帖子")){
resultList.add(str);//获取被匹配的部分
}
}
return resultList;
}
这样应该就可以了。
------解决方案--------------------如果是标准的中文文章的话句子应该只以。结束
//根据你要的关键字和文章内容进行查找句子
public List<String> getStringByKeyWords(String keyWords,String content){
List<String> list=new ArrayList<String>();
Matcher m=Pattern.compile("(.*?"+keyWords+".*?)。").matcher(content);
while(m.find())
list.add(m.group(1));
return list;
}
------解决方案--------------------根据楼主的需求在修改下
//根据你要的关键字和文章内容进行查找句子
public static List<String> getStringByKeyWords(String keyWords,String content){
List<String> list=new ArrayList<String>();
content=content.replaceAll("[\r\n]+","");//先把文章中出现换行的先去掉
Matcher m=Pattern.compile("([^。]*?"+keyWords+".*?)。").matcher(content);
while(m.find())
list.add(m.group(1));
return list;
}
------解决方案--------------------
我那个不是已经把回车换行先去掉了吗,就是不在同一行我们整成同一行,免得后面麻烦,还有你说的html标签是什么意思,例如<span id="yyy" style="......">xxxx</span>元素中间的xxxx要不要呢,
content=content.replaceAll("[\r\n]+","");//先把文章中出现换行的先去掉
如果只是<span id="yyy" style="......">和</span>不要就去掉
content=content.replaceAll("<.*?(/?)>
------解决方案--------------------</.*?>","");//再把文章中的只去标签的部分包括标签属性,标签属性有可能是<img ..../>这样的
如果是<span id="yyy" style="......">xxxx</span>全不要就去掉
content=content.replaceAll("<.*?>(.*?)</.*?>","");//再把文章中有html标签包起来的都去掉