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