Pattern&Matcher簡單用法

package com.xx;

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

/**
 * Pattern&Matcher
 * 
 * @author xx
 *
 */
public class Test1 {
	public static void main(String[] args) {
		// 創建一個正則表達式
		Pattern pattern = Pattern.compile("[0-9]+");
		System.out.println("正則表達式:" + pattern);

		// 使用正則匹配字符串
		boolean matches = Pattern.matches("[0-9]+", "abcde123");
		System.out.println("是否匹配正則表達式:" + matches);

		// 使用正則表達式切割字符串
		String[] arr = pattern.split("a1b2c3d4");
		Arrays.stream(arr).forEach(System.out::println);

		// Matcher提供更加強大的正則匹配操作
		Matcher matcher = pattern.matcher("a1b2c3d4");
		// 匹配全部字符串
		boolean matches2 = matcher.matches();
		System.out.println("是否匹配正則表達式:" + matches2);
		// 只匹配第一個字符串
		boolean lookingAt = matcher.lookingAt();
		System.out.println("首字母是否匹配正則表達式:" + lookingAt);
		// 是否存在匹配項(類似於contains)
		boolean find = matcher.find();
		System.out.println("是否存在匹配項:" + find);

		Pattern pattern2 = Pattern.compile("[0-9]+");
		Matcher matcher2 = pattern2.matcher("aaa2223bb4444");
		// 匹配過濾後的字符串,默認返回第一個
		matcher2.find();
		// 查看最後匹配的結果
		String string = matcher2.toString();
		System.out.println("string" + string);
		// 匹配首個過濾後的子字符串
		// matcher2.lookingAt();
		// 匹配整個字符串
		// matcher2.matches();
		// 返回第一個匹配項的索引位置,默認返回第一個
		int start = matcher2.start();
		// 返回最後一個匹配項的索引位置,默認返回第一個
		int end = matcher2.end();
		// 返回匹配到的字符串
		String group = matcher2.group();
		System.out.println(start);
		System.out.println(end);// 這裏是7是因爲2223被當成了一個整體
		System.out.println(group);

		// eg
		Pattern pattern3 = Pattern.compile("[a-z]+");
		Matcher matcher3 = pattern3.matcher("aaa111bbb222ccc333");
		while (matcher3.find()) {
			System.out.println("過濾結果:" + matcher3.group() + ";子字符串下標:" + matcher3.start());
		}

	}

}

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章