web-dev-qa-db-ja.com

C#Regex Split-角括弧内のすべて

現在、角かっこ内のすべてを取得し、残りのテキストを破棄するために、C#(最新の.NETおよびVisual Studio 2008)で文字列を分割しようとしています。

例: "H1-受容体拮抗薬[HSA:3269] [パス:hsa04080(3269)]"

この場合、「HSA:3269」および「PATH:hsa04080(3269)」を文字列の配列に入れることに興味があります。

どうすればこれを達成できますか?

37
João Pereira

Splitはここでは役に立ちません。正規表現を使用する必要があります。

// using System.Text.RegularExpressions;
// pattern = any number of arbitrary characters between square brackets.
var pattern = @"\[(.*?)\]";
var query = "H1-receptor antagonist [HSA:3269] [PATH:hsa04080(3269)]";
var matches = Regex.Matches(query, pattern);

foreach (Match m in matches) {
    Console.WriteLine(m.Groups[1]);
}

結果をもたらします。

70
Konrad Rudolph

これを試して

string mystr = "Hello my name is  {robert} and i live in  {florida}";

List<string> myvariables = new List<string>();
while (mystr.Contains("{"))
{
    myvariable.Add(mystr.Split('{', '}')[1]);
    mystr = mystr.Replace("{" + mystr.Split('{', '}')[1] + "}", "");
};

このようにして、ロバートとフロリダを含む配列を作成します。

0
BobSpring