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

class IPAddressValidator{
	
    private Pattern pattern;
    private Matcher matcher;
 
    private static final String IPADDRESS_PATTERN = 
		"^([01]?\\d\\d?|2[0-4]\\d|25[0-5])\\." +
		"([01]?\\d\\d?|2[0-4]\\d|25[0-5])\\." +
		"([01]?\\d\\d?|2[0-4]\\d|25[0-5])\\." +
		"([01]?\\d\\d?|2[0-4]\\d|25[0-5])$";
		
	/*private static final String IPADDRESS_PATTERN ="^((25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9][0-9]|[0-9])\\.){3}"
	+"(?:25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9][0-9]?|[0-9])$";*/
	  
    public IPAddressValidator(){
	  pattern = Pattern.compile(IPADDRESS_PATTERN);
    }
	  
   /**
    * Validate ip address with regular expression
    * @param ip ip address for validation
    * @return true valid ip address, false invalid ip address
    */
    public boolean validate(final String ip){		  
	  matcher = pattern.matcher(ip);

	  System.out.println("IP "+ ip + " --> " + matcher.matches());
	  
	  return matcher.matches();	    	    
    }
	
}

public class RegularExpressions extends Object {
	public static void main(String[] args) {
        IPAddressValidator ipAddressValidator=new IPAddressValidator();
		ipAddressValidator.validate("255.255.255.255");
		ipAddressValidator.validate("127.0.0.1");
		ipAddressValidator.validate("255.255.255.");
		ipAddressValidator.validate("127.0.0.a");
	}
}