用正则表达式匹配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