Java正則表達式示例

Java關於正則表達式的API有一些概念不是很清楚,最近需要用到,特別研究了一下,轉載一篇文章以釋疑

Java中關於正則表達式的函數接口有,group(),start(),end(),何爲group,一組這裏指的應爲一個正則表達式中的一個子表達式。

示例

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

public class RegexDemo {
	
	public static void main(String[] args) {
		
		// TODO Auto-generated method stub
		String str = "Hello,World! in Java.";
		Pattern pattern = Pattern.compile("W(or)(ld!)");
		Matcher matcher = pattern.matcher(str);
		while (matcher.find()) {
			System.out.println("Group 0:" + matcher.group(0));// 得到第0組——整個匹配
			System.out.println("Group 1:" + matcher.group(1));// 得到第一組匹配——與(or)匹配的
			System.out.println("Group 2:" + matcher.group(2));// 得到第二組匹配——與(ld!)匹配的,組也就是子表達式
			System.out.println("Start 0:" + matcher.start(0) + " End 0:" + matcher.end(0));// 總匹配的索引
			System.out.println("Start 1:" + matcher.start(1) + " End 1:" + matcher.end(1));// 第一組匹配的索引
			System.out.println("Start 2:" + matcher.start(2) + " End 2:" + matcher.end(2));// 第二組匹配的索引
			System.out.println(str.substring(matcher.start(0), matcher.end(1)));// 從總匹配開始索引到第1組匹配的結束索引之間子串——Wor
		}
	}
}
輸出結果爲
Group 0:World!
Group 1:or
Group 2:ld!
Start 0:6 End 0:12
Start 1:7 End 1:9
Start 2:9 End 2:12
Wor

注意,在Java正則表達式API中組的概念,函數start(int i),end(int i),參數i的含義即爲子表達式的索引,而start,end則分別對應匹配項在字符串中索引的起始值與結束值。


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