统计日志中符合(GET ip 请求数)这个条件的请求总数。
这道题考的其实就是正则表达式的知识点,笔试的是时候时间太紧了,细节没写对,杯具。。。
回来自己写了下,发出来纪念下,呵呵!
package test1; import java.util.regex.Matcher; import java.util.regex.Pattern; public class Wang { public static void main(String[] args) { // String regextIp = "GET//s(([1]{0,1}[0-9]{1,2})|([2]{1}[0-5]{2}))//.(([1]{0,1}[0-9]{1,2})|([2]{1}[0-5]{2}))//.(([1]{0,1}[0-9]{1,2})|([2]{1}[0-5]{2}))//.(([1]{0,1}[0-9]{1,2})|([2]{1}[0-5]{2}))//s[0-9]{1,}";//正则表达式 ,存在bug String regextIp = "GET\\s(([1]{0,1}[0-9]{1,2})|([2]{1}[0-4]{1}[0-9]{1})|([2][5]{1}[0-5]{1}))\\.(([1]{0,1}[0-9]{1,2})|([2]{1}[0-4]{1}[0-9]{1})|([2][5]{1}[0-5]{1}))\\.(([1]{0,1}[0-9]{1,2})|([2]{1}[0-4]{1}[0-9]{1})|([2][5]{1}[0-5]{1}))\\.(([1]{0,1}[0-9]{1,2})|([2]{1}[0-4]{1}[0-9]{1})|([2][5]{1}[0-5]{1}))\\s[0-9]{1,}";// 修正后的正则表达式 String request = "GET 255.250.255.125 12"; Pattern p = Pattern.compile(regextIp); Matcher m = p.matcher(request); int requestSum = 0; if (m.matches()) { String[] str = request.split(" "); requestSum += Integer.parseInt(str[2]); } System.out.println(requestSum); } }
其中要点是ip地址的正则表达式的写法:ip地址是小于255的。
原题是从日志文件中读取,这里没有!
注意:正则表达式已修改,以前的有bug。
统计日志中GET IP请求
5285

被折叠的 条评论
为什么被折叠?



