import java.util.regex.Matcher;
import java.util.regex.Pattern;
public class yige {
 public static void main(String[] args) {
        Pattern p = Pattern.compile("\\ba+b+\\b");
        String s = "aaa (ab jj2rjo aab 2ii oo8d 7haohsie abb";
        Matcher m = p.matcher(s);
        while (m.find()) {
            p(m.group());
        }
    }
 public static void p(Object o){
System.out.print(o+" ");
}}//答案:ab aab abb
//我想问一下这个(ab中的ab竟然能匹配 说明(是单词边界,如何才能将(ab整个读入判断;
//从而把(ab排除在外

解决方案 »

  1.   

    (的作用相当于空格了,怎么样才能让它,不是空格呢?就是相当于一个普通字符如c
    这中景况下; \\ba+b+\\b 不合适!    该如何修改呢?
      

  2.   


    Pattern p = Pattern.compile("\\b(?<!\\()a+b+\\b"); 
         String s = "aaa (ab jj2rjo aab 2ii oo8d 7haohsie abb"; 
         Matcher m = p.matcher(s); 
         while (m.find()) { 
             System.out.println(m.group()+"  "+"start:"+m.start()+"end:"+m.end()); 
         } 
      

  3.   

    \\b(?<!\\()a+b+\\b
    这里是区别!! 这一小段     有什么作用啊?解释一下好吗?
      

  4.   

    通过零宽度的负 lookbehind
    单词的开头不能是(符号