当前位置:编程学习 > wap >>

用正则表达式匹配IP地址的一些问题


 String rs="(?:(?:25[0-5]|2[0-4]\\d|((1\\d{2})|([1-9]?\\d)))\\.){3}(?:25[0-5]|2[0-4]\\d|((1\\d{2})|([1-9]?\\d)))";
String s ="192.256.1.1";
boolean isTrue = s.matches(rs);
 System.out.println(isTrue);


现在有几个疑惑:
①为什么三位数的匹配放在两位数或者一位数的前面?
②为什么在最前面也要?:呢

求指导 java 正则表达式 --------------------编程问答-------------------- ①为什么三位数的匹配放在两位数或者一位数的前面?

这个是由ip地址的结构决定的


②为什么在最前面也要?:呢?

(?:  pattern)是非捕获型括号  匹配pattern,但不捕获匹配结果。
(pattern )是捕获型括号。  匹配pattern,匹配pattern并捕获结果,自动获取组号。
由于这是在java代码中,加上?: 由于只需要匹配的结果,而不需要捕获返回结果组号等,可以减少不必要的开销和资源。
这里在功能上和不加?:结果都一样。
补充:移动开发 ,  Android
CopyRight © 2012 站长网 编程知识问答 www.zzzyk.com All Rights Reserved
部份技术文章来自网络,