Java正則表達式學習

1.

有時可能會有這樣的需求,從HTML頁面獲取指定標籤的指定屬性值,可以通過第三方庫解析來獲取,但是這樣相對比較麻煩!

如果使用正則表達式,那麼就變得簡單了。代碼如下:

package com.mmq.regex;

import java.util.ArrayList;
import java.util.List;
import java.util.regex.Matcher;
import java.util.regex.Pattern;

/**
 * @use 獲取指定HTML標籤的指定屬性的值
 * @ProjectName stuff
 * @Author <a href="mailto:[email protected]">mikan</a></br>
 * @Date 2012-11-19 下午08:27:24 </br>
 * @FullName com.mmq.regex.MatchHtmlElementAttrValue.java </br>
 * @JDK 1.6.0 </br>
 * @Version 1.0 </br>
 */
public class MatchHtmlElementAttrValue {
	
	/**
	 * 獲取指定HTML標籤的指定屬性的值
	 * @param source 要匹配的源文本
	 * @param element 標籤名稱
	 * @param attr 標籤的屬性名稱
	 * @return 屬性值列表
	 */
	public static List<String> match(String source, String element, String attr) {
		List<String> result = new ArrayList<String>();
		String reg = "<" + element + "[^<>]*?\\s" + attr + "=['\"]?(.*?)['\"]?\\s.*?>";
		Matcher m = Pattern.compile(reg).matcher(source);
		while (m.find()) {
			String r = m.group(1);
			result.add(r);
		}
		return result;
	}
	
	public static void main(String[] args) {
		String source = "<a title=中國體育報 href=''>aaa</a><a title='北京日報' href=''>bbb</a>";
		List<String> list = match(source, "a", "title");
		System.out.println(list);
	}
}


2.

在java裏如何利用正則表達式 來獲取A標籤內容

2015-05-11 17:04526453436 | 瀏覽 182 次
 java
private String RegexA(String name){
	Pattern p = Pattern.compile("<a[^>]*>([^<]*)</a>"); 
	Matcher ms = p.matcher(name); 
	if(ms.find()) { 
			return ms.group(1);
	}else
	{
		return name;
	}
}
我這個方法不能匹配 <a οnclick="aa()">6<score<10</a>
就是內容帶左尖括號< 不能匹配,不知道如何修改
2015-05-11 17:36 提問者採納
把正則表達式改成:<a[^>]*>(.*?)</a>
就行了。
提問者評價
謝謝,確實可以



http://www.jb51.net/article/16829.htm Java正則表達式詳解

發佈了109 篇原創文章 · 獲贊 17 · 訪問量 31萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章