2012-03-18 9 views
0

私は正規表現を使用してさらに処理するためにチャットログファイルからデータを抽出する必要があるJavaプログラムを作成しています道)。チャットログスキーマは、[hh:mm:ss]文字列と定義されています。
しかし、データを抽出したい特定の行は、 [hh:mm:ss] <データ1 >データ2の形式です。私が抽出したいデータは、hh:mm:ss、data1およびdata2です。 最初に、私は使用しやすい時間を抽出しようとしました Pattern.compile( "(\ d {2}:\ d {2}:\ d {2})
パターンP1 = Pattern.compile( "<(*)>")を使用して個別にDATA1を抽出し、それは大丈夫だった
しかし、私は "hh:mm:ss" の取得しようとするとき、DATA1とDATA2を。 I以下の正規表現 パターンp = Pattern.compile( ":\ dの{2}。\ dの{2})  <(*)>  (*)(\ dの{2}")を用いてh一致するものは見つかりませんでした。 私の目標を達成するためにどのように進めることができるのか、誰かがアイデアを持っていますか?regexとjavaを使用してチャットログから一連のデータを取得

+0

データのサンプルを提供できますか? –

答えて

1

あなたが自分のパターンにマッチしていれば、うまくいっていたはずです。 [hh:mm:ss ]の時間の括弧については忘れてしまいます。ここを参照してください:

String text = "22:44:55 <data quite much> data 2"; 
    text = text.replaceAll("(\\d{2}:\\d{2}:\\d{2}) <(.*)> (.*)", "replacement"); 
    System.out.println(text); 
    text = "[22:44:55] <data quite much> data 2"; 
    text = text.replaceAll("(\\d{2}:\\d{2}:\\d{2}) <(.*)> (.*)", "replacement"); 
    System.out.println(text); 

これが生成します。

replacement 
[22:44:55] <data quite much> data 2 

だから、最初の文字列が一致し、1秒た - ではありません。ちょうど期待どおり。

おそらくパターンを\\[(\\d{2}:\\d{2}:\\d{2})\\] <(.*)> (.*)に変更する必要があります。

+0

ありがとうBoris、それは完全に動作します。私は今プログラミングプロセスを続けることができます。あなたに貸しがある –

関連する問題