1. 程式人生 > >正則表示式(十七)——不捕獲分組

正則表示式(十七)——不捕獲分組

package com.wy.regular;

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

public class RegularTest {

	public static void main(String[] args) {
		/*
		 *  non-capturing groups不捕獲
		 *  .{3}(?=a) 以a結尾的三個字元(比較常見)
		 *  (?=a).{3} 以a開頭的三個字元 a66
		 *  (?!a).{3} 前面不能是a的三個字元 44a 66b
		 *  .{3}(?!a) 44a 66b
		 *  .{3}(?<!a) 從後往前分析,結尾不是a 4a6
		 *  .{3}(?<a) 異常
		 *  .{3}(?<=a) 44a
		 */
		Pattern pattern = Pattern.compile(".{3}(?<=a)");
		String str = "44a66b";
		Matcher matcher = pattern.matcher(str);
		while (matcher.find()) {
			pri(matcher.group());
		}
	}

	private static void pri(String str) {
		System.out.println(str);
	}
}