在.NET中使用正则表达式从字符串中提取标记
我很好奇是否可以使用正则表达式。 我想从类似于以下字符串的字符串中提取标记:
Select a [COLOR] and a [SIZE].
好的,很简单 – 我可以使用(\[[AZ]+\])
但是,我还想在令牌之间提取文本。 基本上,我希望上面的匹配组是:
"Select a " "[COLOR]" " and a " "[SIZE]" "."
对此最好的方法是什么? 如果有办法用RegEx做到这一点,那就太好了。 否则,我猜我必须提取标记,然后手动循环遍历MatchCollection并根据每个匹配的索引和长度解析子字符串。 请注意我需要保留字符串和标记的顺序。 有没有更好的算法来进行这种字符串解析?
使用Regex.Split(s, @"(\[[AZ]+\])")
– 它应该为您提供您所追求的确切数组。 拆分捕获的组并将它们转换为结果数组中的标记。
这是一种不使用使用String.Split
正则表达式( Regex
)的方法,但是你丢失了分隔符。
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 // .