将ip地址转换成C段地址的UDF,最重要的是判断IP地址的正则表达式。
package cn.cnnic.ops.Study; import java.util.regex.Pattern; import org.apache.hadoop.hive.ql.exec.UDF; import cn.cnnic.ops.util.Constants; /** * company: cnnic department: ops author: baoshan change client ip to C network * segment */ public class GetClientCSegment extends UDF { public static void main(String[] args) { String client = "210.72.32.1"; GetClientCSegment gccs = new GetClientCSegment(); System.out.println(gccs.evaluate(client)); } public String evaluate(String client) { String ipCSegment = ""; Pattern pattern = Pattern.compile( "^((\d|[1-9]\d|1\d\d|2[0-4]\d|25[0-5]|[*])\.){3}(\d|[1-9]\d|1\d\d|2[0-4]\d|25[0-5]|[*])$"); boolean flag = pattern.matcher(client).matches(); String[] arr = client.split(Constants.DOT); if (flag) { ipCSegment = arr[0] + Constants.DOT_SIMPLE + arr[1] + Constants.DOT_SIMPLE + arr[2] + Constants.DOT_SIMPLE + "0"; } else { ipCSegment = client; } return ipCSegment; } }