2011-07-11 5 views
3

私は文字列を持っています正規表現を使用して2つのパイプ間ですべてのコンテンツを取得する方法

文字列s = "| India | vs Aus";

この場合、結果はインドである必要があります。

第二の場合:

のString = "VSアウス|インド|"; この場合、結果はインドである必要があります。

第三の場合:

のString = "|アウス| | VS |インド" 結果shoulsにはインド、Ausのみが含まれています。 vsは出力に存在すべきではありません。

これらのシナリオでは、他の単語、たとえば文字列もこのようにすることができます|インド| in | Aus |そして文字列はこれと同じようにすることもできます|インド| |スリランカ| in | Aus |私は、インド、スリランカ、Ausのような2本のパイプの間に存在する言葉が欲しい。

私はJavaでやりたいです。

任意のポインタが役立ちます。

答えて

4

あなたは、これに似たものを見ている:

String s = "|India| vs |Aus|"; 
    Pattern p = Pattern.compile("\\|(.*?)\\|"); 
    Matcher m = p.matcher(s); 
    while(m.find()){ 
     System.out.println(m.group(1)); 
    } 

あなたは正規表現でparanthesis内部の内容を取得するためにグループを使用する必要があります。

+0

お返事ありがとうございます。それは私が探していた解決策です。 –

+0

私はお手伝いします!あなたが正しいと思ったら答えを受け入れてください。 –

+0

もう1つ質問があります。どのように多くの言葉を出力するかを見つける方法はありますか?上記の場合と同様に、2つの単語があります。 –

6

次のような正規表現を使用することになり...

\|[^|]+\| 

...か...

\|.+?\| 

パイプがとして正規表現で特別な意味を持っているので、あなたはパイプをエスケープする必要がありますまたは

+0

その応答が得られない –

+1

@Vishal @alexの正規表現は正しいです(+1)。希望する結果が得られない場合は、使用しているJavaコードを表示する必要があります。 – stema

+0

申し訳ありませんが、これは動作しています。私は間違いをした。助けてくれてありがとう。 –

関連する問題