Аз съм любопитен, ако това е възможно дори с 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
// .