在.net中使用正则表达式从字符串中提取令牌
本文关键字:字符串 提取 令牌 net 正则表达式 | 更新日期: 2023-09-27 17:54:02
我很好奇这对于Regex是否可能。我想从类似于
的字符串中提取令牌:Select a [COLOR] and a [SIZE].
很简单,我可以用('[[A-Z]+'])
但是,我还想提取标记之间的文本。基本上,我希望上面的匹配组为:
"Select a "
"[COLOR]"
" and a "
"[SIZE]"
"."
最好的方法是什么?如果有一种方法可以用RegEx做到这一点,那就太好了。否则,我猜我必须提取令牌,然后手动遍历MatchCollection,并根据每个Match的索引和长度解析出子字符串。请注意,我需要保留字符串和令牌的顺序。有没有更好的算法来做这种字符串解析?
使用Regex.Split(s, @"('[[A-Z]+'])")
-它应该为您提供您所需要的确切数组。Split获取捕获的组并将它们转换为结果数组中的令牌。
这里是一个不使用正则表达式(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
// .