1. 程式人生 > >深入入門正則表示式(java)

深入入門正則表示式(java)

很多正則引擎都支援命名分組,java是在java7中才引入這個特性,語法與.Net類似(.Net允許同一表示式出現名字相同的分組,java不允許)。

命名分組很好理解,就是給分組進行命名。下面簡單演示一下java中如何使用以及注意事項。

1.正則中定義名為NAME的分組

(?<NAME>X)

這裡X為我們要匹配的內容,注意,在這個命名不能重複,名字也不能以數字開頭!

2.反向引用NAME組所匹配到的內容

\k<NAME>

注意,反向引用是針對組所匹配到的內容,而非組的表示式。

3.替換中,引用組NAME中捕獲到的字串

${NAME}

4.獲取NAME組捕獲的字串

group(String NAME)

注意:也可以使用序號對命名捕獲進行引用,序號從1開始,0為正則的完整匹配結果。

下面用一個簡單的正則來分別獲取年月日為例:

String s = "2015-10-26";
Pattern p = Pattern.compile("(?<year>\\d{4})-(?<month>\\d{2})-(?<day>\\d{2})");
Matcher m = p.matcher(s);
if (m.find()) {
	System.out.println("year: " + m.group("year")); //年
	System.out.println("month: " + m.group("month")); //月
	System.out.println("day: " + m.group("day")); //日
	  
	System.out.println("year: " + m.group(1)); //第一組
	System.out.println("month: " + m.group(2)); //第二組
	System.out.println("day: " + m.group(3)); //第三組
}

System.out.println(s.replaceAll("(?<year>\\d{4})-(?<month>\\d{2})-(?<day>\\d{2})", "${day}-${month}-${year}")); //將 年-月-日 形式的日期改為 日-月-年 形式

輸出結果

year: 2015
month: 10
day: 26
year: 2015
month: 10
day: 26
26-10-2015

轉貼請保留以下連結

本人blog地址