有一个ip数据库
192.168.0.1
118.122.0.24
...........
排除含 192,189,221 开头的ip请教怎么写?

解决方案 »

  1.   

    排除192,189,221 开头的ip 只要得到匹配192,189,221 开头的ip 然后去反就行了
    在ip数据库里匹配192,189,221 开头的ip 不用正则就行吧
      

  2.   

    Java的String类不是有startsWith()和endWith()方法吗? 
      

  3.   

    (\\d\\d\\d\\.){3}(?<!192\\.189\\.221\\.)\\d\\d\\d
      

  4.   

    前面那个(\\d\\d\\d\\.) 是什么意识啊
      

  5.   

    ()\\.\d+\\.\d+\\.\d+]主要是红色里怎么写,我是用string.matches()来进行判断的,谢谢
      

  6.   

    6楼的写法已经可以了。但是(\\d\\d\\d\\.)我觉得写成(\\d{3}\\.)更省事吧?
      

  7.   

    (?!192|189|221)\d{1,3}\\.\d{1,3}\\.\d{1,3}\\.\d{1,3}
      

  8.   


    /**
    有一个ip数据库
    192.168.0.1
    118.122.0.24
    ...........
    排除含 192,189,221 开头的ip请教怎么写?
    */import java.util.regex.Matcher;
    import java.util.regex.Pattern;
    import java.util.ArrayList;public class Test{
    public static void main(String[] args){
    String[] IPArray = new String[]{
    "192.168.0.1",
    "123.168.0.1",
    "189.123.1.1",
    "211.1.1.1"
    }; Object[] result = getResult(IPArray); System.out.println("The result is:\n");
    for(Object o : result){
    System.out.println(o);
    }
    } //这里暂不处理IP是否符合规则 private static Object[] getResult(String[] IPArray){
    ArrayList<String> list = new ArrayList<String>();
    String regex = "^(192|189|211).*";
    for(String ip : IPArray){
    Pattern pattern = Pattern.compile(regex);
    Matcher matcher = pattern.matcher(ip);
    if(matcher.matches()){
    continue;
    }
    list.add(ip);
    }
    return list.toArray();
    }
    }
      

  9.   

    你少加几个\
    应该是这样的
    (?!192|189|221)\\d{1,3}\\.\\d{1,3}\\.\\d{1,3}\\.\\d{1,3}