2011-08-04 12 views
0

私は正規表現で始まり、私は名前、ユーザー、日付や住所 私はサブでトリックを行うことができますを抽出したいと抽出値は

を分割し、この

String test="[ABC]Name:User:Date: Adresse "; 

のような文字列から値を抽出したいです

String test = "String test="[ABC]Name:User:Date: Adresse "; 
     String test2= test.substring(5,test.length()); 
     System.out.println(test2); 
     String[] chaine = test2.split(":"); 
     for(String s :chaine) 
     { 
      System.out.println("Valeur " + s); 
     } 

しかし、私は正規表現をしようと、私は

pattern = Pattern.compile("^[(ABC)|:]."); 

をしましたが、それはdoesnの欲しいですお仕事

私を助けてくれますか?あなたが[]hereをエスケープする必要があり

どうもありがとう

答えて

0

は実施例です。あなたのコードは、おそらくより簡単に正規表現が複雑になる場合は、正規表現よりも、維持されている

^\[(.*)\](.*):(.*):(.*):(.*)$

注意。

問題に直面した場合、「わかっていますが、私は 正規表現を使用します」と思う人もいます。今、彼らには2つの問題があります。 - Jamie Zawinski

+0

おかげで、あなたの引用が本当に正しいですが、私はあなたの助けのために – user799698

1

String#split本当にあなたがしようとしていることを達成するための最良の方法です。アドバイスを

Pattern p = Pattern.compile("^(?:\\[ABC\\])([^:]+):([^:]+):([^:]+):([^:]+)$"); 
    Matcher m = p.matcher(test); 
    while (m.find()) { 
     System.out.println("Valeur " + m.group(1)); // Name 
     System.out.println("Valeur " + m.group(2)); // User 
     System.out.println("Valeur " + m.group(3)); // Date 
     System.out.println("Valeur " + m.group(4)); // Address 
    } 
+0

[OK]を感謝を実施するために少しの正規表現を学ぶジュストたい:正規表現で、以下はあなたに同じ出力を与える、と述べましたしかし、私が[ABC]を否定して名前だけを得るにはどうしたらよいのですか? – user799698

+0

あなたが求めているものはわかりませんが、各グループが元の文字列の1つの要素にマップされるようにコードを更新しました。基本的には、式を '()'で囲むと、そのグループを捕捉して 'Matcher'で後で取り出すことができます。 –

+0

ありがとう!完璧に動作しますが、正規表現はより複雑になりました。私は実践が必要なので、私は正規表現についてのチュートリアルを読むでしょう。 btwもう一度ありがとう! – user799698