C# 在.NET中使用正则表达式从字符串中提取标记
我很好奇这在正则表达式中是否可行。我想从字符串中提取令牌,类似于:C# 在.NET中使用正则表达式从字符串中提取标记,c#,.net,regex,algorithm,C#,.net,Regex,Algorithm,我很好奇这在正则表达式中是否可行。我想从字符串中提取令牌,类似于: Select a [COLOR] and a [SIZE]. 好的,很简单-我可以使用(\[[A-Z]+\]) 但是,我还想提取标记之间的文本。基本上,我希望上面的匹配组是: "Select a " "[COLOR]" " and a " "[SIZE]" "." 最好的方法是什么?如果有一种方法可以用正则表达式实现这一点,那就太好了。否则,我猜我必须提取标记,然后手动循环通过MatchCollection,并根据每个匹配的
Select a [COLOR] and a [SIZE].
好的,很简单-我可以使用(\[[A-Z]+\])
但是,我还想提取标记之间的文本。基本上,我希望上面的匹配组是:
"Select a "
"[COLOR]"
" and a "
"[SIZE]"
"."
最好的方法是什么?如果有一种方法可以用正则表达式实现这一点,那就太好了。否则,我猜我必须提取标记,然后手动循环通过MatchCollection,并根据每个匹配的索引和长度解析出子字符串。请注意,我需要保留字符串和令牌的顺序。有更好的算法来进行这种字符串解析吗?使用
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
// .