/ / Извличане на символи от низ с регулярни изрази в .NET - c #, .net, regex, алгоритъм

Извличане на символи от низ с регулярни изрази в .NET - c #, .net, regex, алгоритъм

Аз съм любопитен, ако това е възможно дори с Regex.Искам да извлечете жетони от низ, подобен на:

Select a [COLOR] and a [SIZE].

Добре, достатъчно лесно - мога да използвам ([[A-Z]+])

Искам обаче да извлека и текста между символите. По принцип искам съвпадените групи за горното да бъдат:

"Select a "
"[COLOR]"
" and a "
"[SIZE]"
"."

Какъв е най-добрият подход за това? Ако има начин да направите това с RegEx, това би било чудесно. В противен случай, предполагам, че трябва да извадя токените, след това да завържа ръчно чрез MatchCollection и да анализирам подречките въз основа на индексите и дължините на всеки мач. Моля, обърнете внимание, че трябва да запазя реда на струните и символите. Има ли по-добър алгоритъм за този вид струнен анализ?

Отговори:

11 за отговор № 1

употреба Regex.Split(s, @"([[A-Z]+])") - тя трябва да ви даде точния масив, който следвате. Разделянето на заловените групи и превръщането им в жетони в масива за резултати.


0 за отговор № 2

Ето един метод без използване на регулярни изрази (Regex), който използва String.Split, но губите разделителите.

        string s = "Select a [COLOR] and a [SIZE].";

string[] sParts = s.Split("[", "]");

foreach (string sPart in sParts)
{
Debug.WriteLine(sPart);
}

// Select a
// COLOR
//  and a
// SIZE
// .