黑马程序员技术交流社区
标题:
ip地址段排序疑问
[打印本页]
作者:
ㄗ灬Night|K
时间:
2013-10-19 22:11
标题:
ip地址段排序疑问
本帖最后由 ㄗ灬Night|K 于 2013-10-20 12:44 编辑
程序结果:
2.2.2.2
10.10.10.10
192.168.1.1
255.255.255.0
如果将程序28行替换为29行,打印结果的第二行应该不满足([1-9]+)这个条件啊,为什么还会打印出结果呢;还有就是两次结果最后一行不一样是为什么啊?
import java.util.TreeSet;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
public class TelRegTest {
public static void main(String[] args) {
String ip = "192.168.1.1 255.255.255.0 10.10.10.10 2.2.2.2";
ip = ip.replaceAll("(\\d+)", "00$1");
System.out.println(ip);
ip=ip.replaceAll("0*(\\d{3})", "$1");
System.out.println(ip);
String[] str = ip.split(" ");
TreeSet<String> ts = new TreeSet<String>();
for(String s : str){
ts.add(s);
}
for(String ss : ts){
System.out.println(ss.replaceAll("0*(\\d+)", "$1"));
//System.out.println(ss.replaceAll("0*([1-9]+)", "$1"));
}
}
}
复制代码
作者:
hyz123456
时间:
2013-10-20 08:10
本帖最后由 hyz123456 于 2013-10-20 08:11 编辑
就算不满足条件,但是你输出语句摆在那里,也会输出的啊,
只不过是满足的地方给你replace了,不满足的就照原样输出了呗。
import java.util.regex.*;
import java.util.*;
public class testRegex {
public static void main(String[] args)
{
String st = "001999jhk.00100";
String regex1 = "0*([0-9])+";
String regex2 = "0*([1-4])+";
System.out.println(st.matches(regex2));
System.out.println(st.replaceAll(regex2,"$1"));
}
}
复制代码
输出结果是:
false
1999jhk.100
在这里replace相当于遍历字符串,把符合你条件的地方修改了。
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2