package com.regex;
import java.util.Arrays;
public class RegexTest {
public static void main(String[] args) {
/*
* 案例一:
* "23.2.2.2 192.168.1.1 3.4.56.78"
* 要求将这些ip按照顺序进行排序。
*
* 思路:
* 1,将ip通过空格切割
* 2,对ip进行排序,通过字符串字典顺序排序,这个顺序是错的
* 原因:每个ip有四段,每一段最多三位。应该按照位数比较才是对的
* 所以应该将每一段都补足三位,不满足的用0填充,这样比较字典顺序才是对的
* 怎么补0呢?每一段的位数不同,补0 的个数也不一样。
* 技巧:干脆按照所需的最多的0的个数来补。每一段都补两个0
* 有的地址多了,取每一段的最后三位
*/
test1();
/*
* 案例二:
* 对邮箱地址的校验,只校验格式
*/
test2();
}
private static void test2() {
String mail = "qwer123456df@163.cn.com";
//"\\w+@\\w+(\\.\\w+)+"这是笼统式的校验
String regex = "[a-zA-Z_0-9]+@[a-zA-Z0-9]+(\\.[a-zA-Z]{2,3}){1,}";
boolean b= mail.matches(regex);
System.out.println(mail+":"+b);
}
public static void test1() {
// TODO Auto-generated method stub
String ip_str="23.2.2.2 192.168.1.1 3.4.56.78";
ip_str = ip_str.replaceAll("(\\d+)", "00$1");
System.out.println(ip_str);
//0023.002.002.002 00192.00168.001.001 003.004.0056.0078
ip_str = ip_str.replaceAll("0*(\\d{3})", "$1");
System.out.println(ip_str);
//023.002.002.002 192.168.001.001 003.004.056.078
String[] ips = ip_str.split(" +");
Arrays.sort(ips);
for(String ip:ips){
System.out.println(ip.replaceAll("0*(\\d+)", "$1"));//去0
}
// String[] ips = ip_str.split(" +");
// Arrays.sort(ips);//直接这样是错的
// for(String ip:ips){
// System.out.println(ip);
// }
}
}