(1)Java正則表達式學習

前言

大家都知道在linux shell、perl、python等腳本語言中正本表達式是非常強大的,幾乎沒有什麼事它不能表達的。對於學java的程序員來說,sun退出的java.util.regex這個包也是很強大,下面我來一步步地向大家介紹Java中正則表達式的使用;


基本類

Java正則表達式使用到的類主要是3個(不是很多吧!),這兩個的功能如下:

(1)Pattern類:是用來表達和陳述所要搜索模式的對象
(2)Matcher類:是真正影響搜索的對象
(3)PatternSyntaxException類:當遇到不合法的搜索模式時,會拋出例外


代碼實例

在接下來的幾節,我都會通過一個個的代碼實例來一點點介紹Java正則表達式的使用,由複雜到簡單,讓大家逐步掌握Java正則表達式。
Test1.java
public class Test1 {

	public static void main(String[] args) {
	
		String str = "(222)-123";
		String regEx = "\\(222\\)";
		
		Pattern pat = Pattern.compile(regEx);  
		Matcher mat = pat.matcher(str);  
		
		if(mat.find())
			System.out.println(mat.group());
		else
			System.out.println("Not find");
	}

}
這個程序是在(222)-123這個字符串中查找匹配"(222)",如果存在會輸出匹配的字符串,否則輸出"Not find";
String regEx = "\\(222\\)";這段代碼之所以使用兩個反斜線符號“\\”,是因爲在java中,與regex有關的包,並不都能理解和識別反斜線字符\,
 爲避免這一點,即爲了讓反斜線字符\在模式對象中被完全地傳遞,應該用雙反斜線字符”\\“。這裏,如果要表示一個“字面上的(”圓符號,就要使用“\\”。大家也可以試試String regEx = "(222)"這個匹配模式,輸出結果是“222”,就也是說這是圓符號不是作爲一個字面上的字符,而是表示222作爲一個整體來看待的意思。如果說要匹配“(222”,如果這時使用String regEx = "(222"是會報錯的。必須使用String regEx = "\\(222)"。

同樣的上面String regEx = "\\(222\\)";還可以表示爲:
String regEx = "\\(2{3}\\)";
這裏{3}表示重複符,表示{3}的前一個字符重複出現3次,則2{3}就表示"222"。有於我們匹配的是(整數),那麼還可以使用下面的方式:
String regEx = "\\(\\d\\d\\d\\)";
這裏"\d"表示從0-9其中一個數字
如果說要匹配"(222)-123"整個字符串,可以使用下面這個表達式:
String regEx = "\\(\\d{3}\\)+-+(\\d{3})";
這裏和大家介紹一個“+”符號,這個符號表示連接的意思,就像String字符串中的“+”一樣,連接兩個字符串。其實上面的表達式等同於:
String regEx = "\\(\\d{3}\\)-(\\d{3})";

總結

(1)k{n},表示n個k
(2)\d,表示0-9中的一個數字
(3)\\(\\),表示圓括號“()”
(4)+,表示連接兩個表達式








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