在.NET中使用正则表达式从字符串中提取标记

Mik*_*sen 7 .net c# regex algorithm

我很好奇是否可以使用正则表达式.我想从类似于以下字符串的字符串中提取标记:

Select a [COLOR] and a [SIZE].
Run Code Online (Sandbox Code Playgroud)

好的,很简单 - 我可以使用 (\[[A-Z]+\])

但是,我还想在令牌之间提取文本.基本上,我希望上面的匹配组是:

"Select a "
"[COLOR]"
" and a "
"[SIZE]"
"."
Run Code Online (Sandbox Code Playgroud)

对此最好的方法是什么?如果有办法用RegEx做到这一点,那就太好了.否则,我猜我必须提取标记,然后手动循环遍历MatchCollection并根据每个匹配的索引和长度解析子字符串.请注意我需要保留字符串和标记的顺序.有没有更好的算法来进行这种字符串解析?

Kob*_*obi 11

使用Regex.Split(s, @"(\[[A-Z]+\])")- 它应该为您提供您所追求的确切数组.拆分捕获的组并将它们转换为结果数组中的标记.