2010-12-13 16 views

答えて

1

これはあなたのために働く必要があります。

^\{[^ ,]+(, [^ ,]+)*\}$ 

と仮定すると、あなたのリストには、少なくとも一つの項目が含まれており、各項目はコンマとスペース(「」)が続いていること。各項目の後にカンマを付ける場合は、jjnguy'sソリューションを使用してください。

  • [^]式がキャレット^に従わないものと一致した:

    は、ここでは、このパターンで何が起こっているかの説明で私の試みです。したがって、[^ ,]は、スペースまたはコンマ以外のものと一致します。

  • +は、「前のものを1回以上一致させる」ことを意味します。したがって、[^ ,]+は、カンマまたはスペースを含まない文字のシーケンスと一致します。
  • *は、「前のものを0回以上一致させる」ことを意味します。したがって、(, [^ ,]+)*は、パターン, [^ ,]+の0回以上の一致と一致します。コンマと空白で始まり、少なくとも1文字のシーケンス(コンマまたはスペースを含まない)が続きます。
  • ^\{\}$にすべてをラップすると、文字列は左中括弧で始まり右中括弧で終わることが保証されます。

this pageを参照してください。正規表現には便利な「カンニングシート」があります。

+0

_jjnguy_の名前のスペルを修正しました。うまくいけば、私はあなたが作っていた編集を混乱させなかったでしょう。 –

+0

@Jeff M jjnguy、gotcha - 私はカーニングを責める:)心配しないでください。私はその第3の箇条書きを明確にしようとしていました。 – Donut

+0

表現と便利なコメントとリンクへの感謝! –

1

以下は、かっこで区切られ、中括弧で囲まれた任意の数のcharシーケンスと一致します(必要があります)。

@"\{([^,]+,)*([^,]+)\}" 

これは、リストには常に1つのアイテムが含まれていることを前提としています。

0

私が希望:

String src = "{one, two, three}"; 
String[] result = src.Substring(1, src.Length - 2).Split(", "); 
'anystring' で許される文字
関連する問題