求一Pattern.compile 正则表达式
如:现在我有文件如下:
aaa
bbb
ccc
cda
adf
我想取出开头不是a和b的字符串,表达式怎么写?

解决方案 »

  1.   

    楼上们说的对.
    LZ多看看API自己绝对能写出来的
      

  2.   

    这没必要用正则,直接startWith判断就行了。
      

  3.   


    import java.util.*;
    import java.util.regex.*;
    public class Test7 { /**
     * @param args
     */
    public static void main(String[] args) {
    // TODO Auto-generated method stub
    ArrayList<String> input = new ArrayList<String>();
    input.add("aaa");input.add("bbb");input.add("ccc");
    input.add("cda");input.add("adf");

    ArrayList<String> test = getString(input);
    System.out.println("*******getString()*******");
    for(String temp : test){
    System.out.println(temp);
    }

    ArrayList<String> test1 = getString(input);
    System.out.println("*******getString1()*******");
    for(String temp : test1){
    System.out.println(temp);
    } }
    //使用startWith方法实现
    static ArrayList<String> getString(ArrayList<String> input){
    ArrayList<String> result = new ArrayList<String>();
    for(int i=0;i<input.size();i++){
    String temp = input.get(i);
    if((!temp.startsWith("a")) && (!temp.startsWith("b"))){
    result.add(temp);
    }
    }
    return result;
    } //使用正则表达式实现
    static ArrayList<String> getString1(ArrayList<String> input){
    ArrayList<String> result = new ArrayList<String>();
    Pattern p = Pattern.compile("^[^ab].*");
    for(int i=0;i<input.size();i++){
    Matcher m = p.matcher(input.get(i));
    while(m.find()){
    result.add(input.get(i));
    }
    }
    return result;
    }
    }
      

  4.   


    这个不太好吧?这样一个a或者一个b的也会匹配上吧好像。。稍微变一下:"^[^ab].+$"
      

  5.   

    你这个反而错了吧,原来那个“^[^ab].*”一个a或者一个b不会匹配上,但是一个c会匹配上。你这个连一个c都不会匹配上了……