我很好奇正则表达式是否有可能。我想从类似于以下内容的字符串中提取令牌:
Select a [COLOR] and a [SIZE].
好的,很简单-我可以使用 (\[[A-Z]+\])
(\[[A-Z]+\])
但是,我也想提取标记之间的文本。基本上,我希望以上的匹配组为:
"Select a " "[COLOR]" " and a " "[SIZE]" "."
最好的方法是什么?如果可以使用RegEx做到这一点,那就太好了。否则,我猜测我必须提取令牌,然后手动遍历MatchCollection并根据每个Match的索引和长度解析出子字符串。请注意,我需要保留字符串和标记的顺序。有没有更好的算法来进行这种字符串解析?
使用Regex.Split(s, @"(\[[A-Z]+\])")-它应该为您提供精确的阵列。拆分将捕获的组转换为结果数组中的标记。
Regex.Split(s, @"(\[[A-Z]+\])")