java,java正则匹配html标签问题

Java正则 HTML 标签 得到 纯文本
在显示新闻的时候,首页 图片和文字 是分开的 ,但是保存的是html文件,图片是以 &img src=&&&来实现的,所以我在取纯文字的时候 , 需要将图片那个&&给去掉,包含其他的有html标记的都要去掉,在网上查出来的这个能删除html中的标签.
public static String Html2Text(String inputString){&&&& String htmlStr = inputS //含html标签的字符串&&&& String textStr =&&;&&&& java.util.regex.Pattern p_&&&& java.util.regex.Matcher m_&&&& java.util.regex.Pattern p_&&&& java.util.regex.Matcher m_&&&& java.util.regex.Pattern p_&&&& java.util.regex.Matcher m_
&&& try{&&&&&&&&& String regEx_script = &&[\\s]*?script[^&]*?&[\\s\\S]*?&[\\s]*?\\/[\\s]*?script[\\s]*?&&; //定义script的正则表达式{或&script[^&]*?&[\\s\\S]*?&\\/script& }&&&&&&&&& String regEx_style = &&[\\s]*?style[^&]*?&[\\s\\S]*?&[\\s]*?\\/[\\s]*?style[\\s]*?&&; //定义style的正则表达式{或&style[^&]*?&[\\s\\S]*?&\\/style& }&&&&&&&&& String regEx_html = &&[^&]+&&; //定义HTML标签的正则表达式
&&&&&&&&& p_script = Pattern.compile(regEx_script,Pattern.CASE_INSENSITIVE);&&&&&&&&& m_script = p_script.matcher(htmlStr);&&&&&&&&& htmlStr = m_script.replaceAll(&&); //过滤script标签
&&&&&&&&& p_style = Pattern.compile(regEx_style,Pattern.CASE_INSENSITIVE);&&&&&&&&& m_style = p_style.matcher(htmlStr);&&&&&&&&& htmlStr = m_style.replaceAll(&&); //过滤style标签
&&&&&&&&& p_html = Pattern.compile(regEx_html,Pattern.CASE_INSENSITIVE);&&&&&&&&& m_html = p_html.matcher(htmlStr);&&&&&&&&& htmlStr = m_html.replaceAll(&&); //过滤html标签
&&&&&&&&& textStr = htmlS&&&& }catch(Exception e){&&&&&&&&& Manager.log.debug(&neiNewsAction&,&Html2Text: & + e.getMessage());&&&& }&&&& return textS//返回文本字符串&}&&
&&最后修改于
请各位遵纪守法并注意语言文明用java字符串方法去除HTML代码标签的问题_百度知道
用java字符串方法去除HTML代码标签的问题
比如有这样的html代码:
&div id=&mini_nav_qq&&&li&&a target=&_top& href=&http://lady.qq.com/emo/emotio.shtml&&情感&/a&&/li&&li&&a target=&_top& href=&http://lady.qq.com/beauty/beauty.shtml&&美容&/a&&/li&&/div&
想要实现把&a&、&div&等...
我有更好的答案
可以通过replaceAll方法进行字符串替换,之后替换的内容用正则表达式来匹配。举例&String ss=&&div id='mini_nav_qq'&&li&&a target='_top' & +
& &href='http:// lady.qq.com/emo/emotio.shtml'&情感&/a&&/li&&li&& +
& &&a target='_top' href='美容&/a&&/li&&/div&&;String ss=ss.replaceAll(&&(/?\\S+)\\s*?[^&]*?(/?)&&,&&$1$2&&);//通过只保留&&“后面的字符串,之后删除空格和后面的内容,快捷的实现去除操作(此方法通用于所有的标签去除,只需要传入不同的ss值)。结果就是:&div&&li&&a&情感&/a&&/li&&li&&a&美容&/a&&/li&&/div&。
采纳率:82%
来自团队:
class Test { public static void main(String [] a){ String ss=&&div id='mini_nav_qq'&&li&&a target='_top' & +
&href='http:// lady.qq.com/emo/emotio.shtml'&情感&/a&&/li&&li&& +
&&a target='_top' href=''&美容&/a&&/li&&/div&&; String ss2=ss.replaceAll(&(\\&\\w+\\s*)[^\\&]*&, &$1&); System.out.println(ss2); }}
本回答被提问者采纳
试试这个public class DelHTML { public static void main(String[] args){
String html = &&div id=\&mini_nav_qq\&&&li&&a target=\&_top\& href=\&\&&情感&/a&&/li&&li&&a target=\&_top\& href=\&\&&美容&/a&&/li&&/div&&;
System.out.println(removeInTag(html)); }
private static String removeInTag(String a) {
String reg = &\\s\\w+=\\\&[^\&]+\\\&&;
//System.out.println(a.replaceAll(reg, &&));
return a.replaceAll(reg, &&);
按照&& 一对对的遍历处理,如:处理&div id=&mini_nav_qq&&时,将第一个空格到倒数第二个字符之间的字符串删除即可。
其他1条回答
为您推荐:
其他类似问题
您可能关注的内容
html代码的相关知识
换一换
回答问题,赢新手礼包
个人、企业类
违法有害信息,请在下方选择后提交
色情、暴力
我们会通过消息、邮箱等方式尽快将举报结果通知您。&注:这是Java正则表达式去除html标签方法。
&&&&private static final String regEx_script = "&script[^&]*?&[\\s\\S]*?&\\/script&";
&&&&private static final String regEx_style = "&style[^&]*?&[\\s\\S]*?&\\/style&";
&&&&private static final String regEx_html = "&[^&]+&";
&&&&private static final String regEx_space = "\\s*|\t|\r|\n";
&&&&private static final String regEx_w = "&w[^&]*?&[\\s\\S]*?&\\/w[^&]*?&";
&&&&&* @param htmlStr
&&&&&* @return 删除Html标签
&&&&&* @author LongJin
&&&&public static String delHTMLTag(String htmlStr) {
&&&&&&&&Pattern p_w = Pattern.compile(regEx_w, Pattern.CASE_INSENSITIVE);
&&&&&&&&Matcher m_w = p_w.matcher(htmlStr);
&&&&&&&&htmlStr = m_w.replaceAll("");
&&&&&&&&Pattern p_script = Pattern.compile(regEx_script, Pattern.CASE_INSENSITIVE);
&&&&&&&&Matcher m_script = p_script.matcher(htmlStr);
&&&&&&&&htmlStr = m_script.replaceAll("");
&&&&&&&&Pattern p_style = Pattern.compile(regEx_style, Pattern.CASE_INSENSITIVE);
&&&&&&&&Matcher m_style = p_style.matcher(htmlStr);
&&&&&&&&htmlStr = m_style.replaceAll("");
&&&&&&&&Pattern p_html = Pattern.compile(regEx_html, Pattern.CASE_INSENSITIVE);
&&&&&&&&Matcher m_html = p_html.matcher(htmlStr);
&&&&&&&&htmlStr = m_html.replaceAll("");
&&&&&&&&Pattern p_space = Pattern.compile(regEx_space, Pattern.CASE_INSENSITIVE);
&&&&&&&&Matcher m_space = p_space.matcher(htmlStr);
&&&&&&&&htmlStr = m_space.replaceAll("");
&&&&&&&&htmlStr = htmlStr.replaceAll("&", "");
&&&&&&&&return htmlStr.trim();
阅读(...) 评论()JAVA去除HTML标签
我的图书馆
JAVA去除HTML标签
public static String getonerow(String HTMLStr)&& &&& {&& &&&&&&& String htmlStr = HTMLS&& &&&&&&& String textStr = "";&& &&&&&&& java.util.regex.Pattern p_&& &&&&&&& java.util.regex.Matcher m_&& &&&&&&& java.util.regex.Pattern p_&& &&&&&&& java.util.regex.Matcher m_&& &&&&&&& java.util.regex.Pattern p_&& &&&&&&& java.util.regex.Matcher m_&& &&&&&&& try& &&&&&&& {&& &&&&&&&&&&& String regEx_script = "&[\\s]*?script[^&]*?&[\\s\\S]*?&[\\s]*?\\/[\\s]*?script[\\s]*?&";&&& &&&&&&&&&&& String regEx_style = "&[\\s]*?style[^&]*?&[\\s\\S]*?&[\\s]*?\\/[\\s]*?style[\\s]*?&";&&& &&&&&&&&&&& String regEx_html = "&[^&]+&";&& &&&&&&&&&&& p_script = Pattern.compile(regEx_script, Pattern.CASE_INSENSITIVE);&& &&&&&&&&&&& m_script = p_script.matcher(htmlStr);&& &&&&&&&&&&& htmlStr = m_script.replaceAll("");&&& &&&&&&&&&&& p_style = Pattern.compile(regEx_style, Pattern.CASE_INSENSITIVE);&& &&&&&&&&&&& m_style = p_style.matcher(htmlStr);&& &&&&&&&&&&& htmlStr = m_style.replaceAll("");&&& &&&&&&&&&&& p_html = Pattern.compile(regEx_html, Pattern.CASE_INSENSITIVE);&& &&&&&&&&&&& m_html = p_html.matcher(htmlStr);&& &&&&&&&&&&& htmlStr = m_html.replaceAll("");&& &&&&&&&&&&& textStr = htmlStr.replaceAll(" ", "");&& &&&&&&&&&&& textStr = htmlStr.replaceAll("&",& "&");&& &&&&&&&&&&& textStr = htmlStr.replaceAll("&",& "&");&& &&&&&&&&&&& textStr = htmlStr.replaceAll("®", "®");&& &&&&&&&&&&& textStr = htmlStr.replaceAll("&", "&");&& &&&&&&& }&& &&&&&&& catch (Exception e)&& &&&&&&& {&& &&&&&&&&&&& System.err.println("Html2Text: " + e.getMessage());&& &&&&&&& }&& &&&&&&& return textS&& &&& }&
本文来自CSDN博客,转载请标明出处:
[转]&[转]&[转]&[转]&[转]&[转]&
喜欢该文的人也喜欢Java如何过滤html代码中的img标签 - 简书
Java如何过滤html代码中的img标签
在做项目的过程中,需要将一段html代码中的img标签中的src属性值批量替换成其他对应的值。
如下一段代码
&!DOCTYPE html&
&meta charse="utf-8"&
&title&demo&/title&
width: 200
![](http://upload-images.jianshu.io/upload_images/c17fe5db8bfa3b9.JPG?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)
![](http://upload-images.jianshu.io/upload_images/c17fe5db8bfa3b9.JPG?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)
![](http://upload-images.jianshu.io/upload_images/c17fe5db8bfa3b9.JPG?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)
![](http://upload-images.jianshu.io/upload_images/c17fe5db8bfa3b9.JPG?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)
经过处理需要变成如下一段html片段
&!DOCTYPE html&
&meta charse="utf-8"&
&title&demo&/title&
width: 200
![](http://dogwhere.b0.upaiyun.com/topic/3b473ccb822fa8addf18667.JPG)
![](http://dogwhere.b0.upaiyun.com/topic/3b473ccb822fa8addf18668.JPG)
![](http://dogwhere.b0.upaiyun.com/topic/3b473ccb822fa8addf18669.JPG)
![](http://dogwhere.b0.upaiyun.com/topic/3b473ccb822fa8addf18670.JPG)
解决这个问题的关键就是一个正则表达式,如下是处理的完整代码
//匹配img标签的正则表达式
String regxpForImgTag = "&img\\s[^&]+/&";
Pattern pattern = Pattern.compile(regxpForImgTag);
Matcher matcher = pattern.matcher(result);
while (matcher.find()) {
String temp = matcher.group();
String tempUrl = temp.substring(temp.indexOf("src=") + 5);
tempUrl =tempUrl.substring(0, tempUrl.indexOf("\""));
String urlResult = "another url";
result = result.replace(temp, urlResult);
技术。骑行。健身。
Spring Cloud为开发人员提供了快速构建分布式系统中一些常见模式的工具(例如配置管理,服务发现,断路器,智能路由,微代理,控制总线)。分布式系统的协调导致了样板模式, 使用Spring Cloud开发人员可以快速地支持实现这些模式的服务和应用程序。他们将在任何分布式...
百战程序员_ Java1573题 QQ群:034603 掌握80%年薪20万掌握50%年薪10万 全程项目穿插, 从易到难,含17个项目视频和资料持续更新,请关注www.itbaizhan.com 国内最牛七星级团队马士兵、高淇等11位十年开发经验专...
工厂模式类似于现实生活中的工厂可以产生大量相似的商品,去做同样的事情,实现同样的效果;这时候需要使用工厂模式。简单的工厂模式可以理解为解决多个相似的问题;这也是她的优点;比如如下代码:function CreatePerson(name,age,sex) {var obj ...
Java 基础思维导图,让 Java 不再难懂 - 工具资源 - 掘金思维导图的好处 最近看了一些文章的思维导图,发现思维导图真是个强大的工具。了解了思维导图的作用之后,觉得把它运用到java上应该是个不错的想法,这样回顾知识点的时候一目了然,快速知道自己的短板。 思维导图...
为什么不写成都有多美好安逸,多有活力和无法抵抗的魅力呢。不必了,已经有足够多的人为它安静陈述细数那些可爱的性格,描绘那样一种舒适安逸慢节奏充满呼吸感的生活。
为什么要说成都‘遗憾‘呢,好像说的有些过分悲伤,有些沉重了。
就在昨天,我和半年没见的好朋友终...
本文的大部分内容是对苹果关于APNs官方文档的翻译以及整理。 一、设备token和消息的生命周期 关于设备token以及推送消息的生命周期需要注意下面几点: Token会在iOS系统更新或者设备数据、设置被擦除的时候改变。 当设备离线的时候,APNS会将消息数据存储一段时间...
我们提了三个问题:有什么是不应该用金钱来买卖的?如果不用金钱来买卖,那又根据什么来分配才公平?如果实施这些分配标准的话,事实上的效果是怎么样的?这是三个一连串的问题。 1.商家为什么会放弃“价高者得” 有什么是不应该用金钱来买卖的?有同学回答:“大学会录取最优秀的学生,而不...
你的时间有限,所以不要为别人而活。不要被教条所限,不要活在别人的观念里。不要让别人的意见左右自己内心的声音。最重要的是,勇敢的去追随自己的心灵和直觉,只有自己的心灵和直觉才知道你自己的真实想法,其他一切都是次要。—————乔布斯 对于上面那段话我有2个感受1、是不是鸡汤取决...

我要回帖

更多关于 java 替换html标签 的文章

 

随机推荐