2016-10-03 11 views
0

に合わせてI持って、次のテキスト:some unknown random stuff here: (ben, tim, sam toben, suzei)私だけからの各項目を引き出すために正規表現を使用する必要が正規表現がリスト

リストカンマ区切り(サイズ不明):bentimsam tobenを、一致したグループにsuzeiを追加します。先行/後続の空白は関係ありません。

私は以下を試しました:(?:\(([^,]+))しかし、それはグループとしてbenを引き出すだけです。

アイデア?

+0

どの言語。おそらく、これのための単純な正規表現以上のものを使用する必要があります。例えば。分割メソッドまたはそのようなもの... –

+0

@Jan - 言語固有の実装があったことを忘れてしまった、私はタグを付けるだろう - ありがとう。 – Cheetah

+0

@MadPhysicist - 私は文字列分割を使用することができる悲しいことにのみ正規表現を使用する必要があります。 – Cheetah

答えて

2

これは、正規表現を使用して行うことができる方法ではありませんです。しかし、それは正規表現とString.split()を使って行うことができます。

このような何か:

String[] getList(String text) { 
    Pattern p = Pattern.compile(".+\\((.+)\\)"); // Note the doubled backslashes 
    Matcher m = p.matcher(text); 
    if (m.find()) { 
     return m.group(1).split(","); 
    } else { 
     return new String[0]; 
    } 
} 

Demo of the regex on Regex101

これは何は、コンマ文字の配列にその内容を分割し、ブラケットの内容をつかむです。

+0

一致するテキストを一重引用符( ')で分割していますが、コンマ(、)で分割する必要があります。分割しないと文字列が返されます。 –

+0

@カーティ私の悪い、ありがとう。 –