我做了以下例子:public static void main(String[] args) {
String input="ab";
String regex="(<=a)(b)";
Pattern pattern=Pattern.compile(regex);
Matcher matcher=pattern.matcher(input);
while (matcher.find()) {
System.out.println("-----------------------------");
System.out.println("总:" + matcher.group());
System.out.println("-----------------------------");
}
}按理说应该输出"b"呀,可是它什么都没有输出,为什么?我听说java有有后瞻呀

解决方案 »

  1.   

    String regex="(?<=a)(b)";
    特殊构造(非捕获) 
    (?:X) X,作为非捕获组 
    (?idmsux-idmsux)  Nothing,但是将匹配标志由 on 转为 off 
    (?idmsux-idmsux:X)   X,作为带有给定标志 on - off 的非捕获组 
    (?=X) X,通过零宽度的正 lookahead 
    (?!X) X,通过零宽度的负 lookahead 
    (?<=X) X,通过零宽度的正 lookbehind 
    (?<!X) X,通过零宽度的负 lookbehind 
    (?>X) X,作为独立的非捕获组 
    叫法不太一样
      

  2.   

    (<=a)(b) 改为 (?<=a)(b) 就可以了。这种称为“前瞻”,学名为 positive lookbehind(肯定型逆序环视)
      

  3.   

    (<=a)(b)的语法不是java的,肯定逆序环视应该写成(?<=a)b
      

  4.   

    你在jdk中java.util.regex中看,那有相关正则语法,很全。