C # Regex Split - все в квадратных скобках - PullRequest
37 голосов
/ 11 апреля 2009

В настоящее время я пытаюсь разбить строку в C # (последние версии .NET и Visual Studio 2008), чтобы извлечь все, что находится в квадратных скобках, и отбросить оставшийся текст.

Например: "Антагонист H1-рецептора [HSA: 3269] [PATH: hsa04080 (3269)]"

В этом случае мне интересно получить " HSA: 3269 " и " PATH: hsa04080 (3269) " в массив строк.

Как этого достичь?

Ответы [ 2 ]

70 голосов
/ 11 апреля 2009

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

Выводит ваши результаты.

0 голосов
/ 07 сентября 2017

Попробуйте это

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

Таким образом, у меня будет массив, в котором будут Роберт и Флорида.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...