java正则表达式总结

最近用到的正则表达式

由于最近在做一个android的新闻客户端,多次用到了正则表达式,因此总结下。
1.使用正则表达式获取Rss资源内的文章内容的图片url
因为在每条新闻浏览的listView里需要新闻内容里的图片,因此你需要抓取文章第一张照片url地址,豆瓣的照片格式是:
java正则表达式总结_第1张图片
你需要在众多的内容中获取图片ur地址,这需要java正则表达式写个方法
                /**
		 * 提取html中imag的src内容
		 * 返回的值格式为
		 * http://img6.douban.com/view/presto/large/public/111.jpg
		 */

		public String getImgStr(String htmlStr) {
			String img = "", tmp = "";
			java.util.regex.Pattern p_image;
			java.util.regex.Matcher m_image;

			String regEx_img = "http://[([a-z0-9]|.|/|\\-)]+.[(jpg)|(bmp)|(gif)|(png)]";// 图片链接地址
			p_image = java.util.regex.Pattern.compile(regEx_img, java.util.regex.Pattern.CASE_INSENSITIVE);
			m_image = p_image.matcher(htmlStr);
			while (m_image.find()) {
				img = img + "," + m_image.group();
			}
			System.out.println(img.indexOf(","));
			if (img.indexOf(",") >= 0){
				String[] url=img.substring(1).split(",");
				if (url.length>1) {
					if (url[1].indexOf("jpg")!=-1) {
						return url[1];
					}else{
						return null;
					}
					
				}else{
					return null;
				}
				
			}else
				return img;
			
		}
这个方法返回的就是第一张图片url地址,而且大家会想到如果文章里没有图片就返回null,后面你也可以帅选没有图片的文章。
2.过滤文本超链接
想必大家在做网站时,经常用js跟超链接打招呼,我碰到的问题是:一篇文章从RSS获取到后,里面的文字含有超链,显示在手机里字体会有颜色,这样会很难看。
开始想到的办法是到百度里搜索:android webView消除html超链接,得到的是解决不能让浏览器使用超链接的办法
            //屏蔽超链接
	    bodyHtml.setWebViewClient(new WebViewClient(){
	    	public boolean shouldOverrideUrlLoading(WebView view, String url) {
	            return true;
	        }
	    });

点击超链接确实不能跳转到别的页面,但是字体还是有颜色,因此我搜寻的方向错了,因此搜索java正则表达式过滤正则表达式,就得到了自己需要的结果,既然百度并没大家想的那么智能,那就自己做的尽可能精确(搜索结果第一页竟然出现php版的,我也是醉了)
                //去除超链接,保留字体
		String regex="<\\s*a.*?/a\\s*>";
		title=title.replaceAll(regex, "");
当然你也可以把超链接的字体去掉都可以。

最后还是那句话:只要坚持查找,你一定能找到你需要的!!


你可能感兴趣的:(java)