0

以下のような行を含むログファイルがあります。

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/

上記の行で 200 である http ステータス コードを取得しようとしています。これは string の後に配置されますHTTP/1.1"。http のバージョン (ここでは 1.1) は、すべての行で共通であるとは限りません。

各行の http ステータス コードを見つけるのを手伝ってください。

4

3 に答える 3

1

inputString.split(" ")文字列の配列を返すものを使用します。3 番目の要素はステータス コードである必要があります。

于 2012-10-15T10:04:34.503 に答える
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-> ドットで区切られた 2 つの数字を一致させる。

  • (\\d{3})→ステータスコードを一致させるために、連続した3桁を一致させます。この情報が必要なので、グループでキャプチャしました。

于 2012-10-15T10:07:59.743 に答える
0

行には常に http/1.1 が含まれていますか? もしそうなら、Java http://docs.oracle.com/javase/1.4.2/docs/api/java/lang/String.html#substring(int , int)で部分文字列メソッドを使用できるはずです

于 2012-10-15T10:07:07.950 に答える