关于正则表达式 HDU 2206

出题还是有点不严谨的 自习看看HDU2206这个题 我完全不能明白为什么002.002.002.002也是IP地址 简直无法忍受

不过还是贴出我认为比较正确的代码吧 虽然是初学正则 而且是第一次用java来编写acm题目

下面贴出我认为的正确的代码:

 

package cn.hdu.javabase;

import java.util.Scanner;
import java.util.regex.Matcher;
import java.util.regex.Pattern;

public  class Main {

     public  static  void main(String[] args) {
        String str;
        Scanner cin =  new Scanner(System.in);
        cin.hasNextInt();
        Pattern pattern = Pattern
                .compile("^(([0-1]\\d{2}|\\d|[1-9]\\d|1\\d{2}|2[0-4]\\d|25[0-5])\\.){3}([0-1]\\d{2}|\\d|[1-9]\\d|1\\d{2}|2[0-4]\\d|25[0-5])$");
         while (cin.hasNextLine()) {
            str = cin.nextLine();
            Matcher matcher = pattern.matcher(str);
             if (matcher.matches()) {
                System.out.println("YES");
            }  else {
                System.out.println("NO");
            }
        }
    }
}

 


 

  

但是为了更多的人ac我就贴出杭电oj所认为的可以ac的代码:

package cn.hdu.javabase;

import java.util.Scanner;
import java.util.regex.Matcher;
import java.util.regex.Pattern;

public  class Main {

     public  static  void main(String[] args) {
        String str;
        Scanner cin =  new Scanner(System.in);
        cin.hasNextInt();
        Pattern pattern = Pattern
                .compile("^(([0-1]\\d{2}|\\d|[1-9]\\d|1\\d{2}|2[0-4]\\d|25[0-5])\\.){3}([0-1]\\d{2}|\\d|[1-9]\\d|1\\d{2}|2[0-4]\\d|25[0-5])$");
         while (cin.hasNextLine()) {
            str = cin.nextLine();
            Matcher matcher = pattern.matcher(str);
             if (matcher.matches()) {
                System.out.println("YES");
            }  else {
                System.out.println("NO");
            }
        }
    }

} 

 

大家可以试一下哦

 

你可能感兴趣的:(正则表达式)