我有一个日志文件,其中包含如下所示的行。
GET / common / data / register / HTTP / 1.1“200 254614”https://www.test.com/hiii/“Mozilla / 5.0(Windows NT 6.1; WOW64; rv:10.0.8)Gecko / 20100101火狐/
我正在尝试获取上述行中的http状态代码200。
这将放在字符串HTTP/1.1"
之后。
http的版本(此处为1.1)在所有行中可能并不常见。
请帮我找出每行中的http状态代码。
答案 0 :(得分:1)
使用inputString.split(" ")
将返回字符串数组,第3个元素应该是状态代码。
答案 1 :(得分:1)
试试这个正则表达式: -
String str = "GET /common/data/register/ HTTP/1.1\" 200 254614 " +
"https://www.test.com/hiii/ Mozilla/5.0 " +
"(Windows NT 6.1; WOW64; rv:10.0.8) " +
"Gecko/20100101 Firefox/ ";
Pattern pattern = Pattern.compile("HTTP/\\d.\\d\"\\s(\\d{3})");
Matcher match = pattern.matcher(str);
while (match.find()) {
System.out.println(match.group(1)); // Prints 200
}
以下是对上述正则表达式的解释: -
HTTP/\\d.\\d\"
- >将匹配HTTP/1.1"
。您可以拥有任何身份(例如:5.4)
\\d.\\d
- >匹配由点分隔的两位数字。
(\\d{3})
- >匹配连续性中的3位数以匹配状态代码。我们已经在一个小组中捕获了它,因为我们想要这些信息。
答案 2 :(得分:0)
该行是否始终包含http / 1.1? 如果是这样,你应该能够在java http://docs.oracle.com/javase/1.4.2/docs/api/java/lang/String.html#substring(int,int)
中使用substring方法