黑马程序员技术交流社区
标题:
正则表达式小练习求解
[打印本页]
作者:
Synaric
时间:
2015-10-5 10:37
标题:
正则表达式小练习求解
示例博客有个小练习,注意看最后一步
/*
*需求: 将ip地址进行地址段顺序的排序。 192.68.1.254 102.49.23.013 10.10.10.10 2.2.2.2 8.109.90.301
*思路: 按照字符串自然顺序,只要让他们每一段都是3位即可。
* 1、按照每一段需要的最多的0进行补齐,那么每一段就会至少保证有3位。
* 2、将每一段只保留3位。
*/
public class RegexTest_2 {
public static void main(String[] args) {
String ip="192.68.1.254 102.49.23.013 10.10.10.10 2.2.2.2 8.109.90.301";
System.out.println(ip);
//保证每一段至少三位
ip = ip.replaceAll("(\\d+)", "00$1");
System.out.println(ip);
//将每一段截取到三位
ip = ip.replaceAll("0*(\\d{3})", "$1");
System.out.println(ip);
//以空格截取子串
String[] ips = ip.split(" ");
//利用TreeSet自然元素排序
TreeSet<String> tSet = new TreeSet<String>();
for(String string : ips){
tSet.add(string);
}
//去掉每段多余的0并打印
for(String string : tSet){
//不恰当的匹配,102会被截取为12
//System.out.println(string.replaceAll("0*(\\d)", "$1"));
}
}
}
复制代码
如果对102.049.023.013去0会变成12.49.23.13,应该怎么写好呢?
我有想过
System.out.println(string.replaceAll("(0([^0]\\d))|(00([^0]))", "$2"));
复制代码
但不知道$后面怎么写
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2