web-dev-qa-db-fra.com

C # Regex Split - tout entre crochets

J'essaie actuellement de scinder une chaîne en C # (les derniers .NET et Visual Studio 2008), afin de récupérer tout ce qui se trouve entre crochets et de supprimer le texte restant.

Ex .: "antagoniste du récepteur H1 [HSA: 3269] [CHEMIN: hsa04080 (3269)]"

Dans ce cas, je suis intéressé à obtenir " HSA: 3269 " et " PATH: hsa04080 (3269) " dans un tableau de chaînes.

Comment cela peut il etre accompli?

36
João Pereira

Split ne vous aidera pas ici; vous devez utiliser des expressions régulières:

// 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]);
}

Donne vos résultats.

68
Konrad Rudolph

Essaye ça 

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] + "}", "");
};

De cette façon, j'aurai un tableau contenant robert et florida.

0
BobSpring