先看一段代码:
import java.util.regex.Matcher;
import java.util.regex.Pattern;
public class TestRegular {
public static void main(String[] args) {
Pattern p = Pattern.compile(".{3}a");
String s ="333a66b";
Matcher m = p.matcher(s);
while(m.find()){
p(m.group());
}
}
public static void p(Object o){
System.out.println(o);
}
}
输出:
333a
如果我们把Pattern改成这样:
Pattern p = Pattern.compile(".{3}(?=a)");
看看输出:
333
在小括号里加入?=表示非捕获字符组。即那个组不捕获。
如果把?=a放到前面:
Pattern p = Pattern.compile("(?=a).{3}");
结果输出:
a66
写到后面和写到前面不一样,写到前面表示,以a开头,并且只打印3个。我嘞个去。。。。这个太难记忆,用的也少。可不必理会。