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());
		}

	}

}

 

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