C# 如何将正则表达式拆分为精确的单词?

C# 如何将正则表达式拆分为精确的单词?,c#,regex,C#,Regex,我需要一些关于C中正则表达式的帮助 我有以下字符串 "[[Sender.Name]]\r[[Sender.AdditionalInfo]]\r[[Sender.Street]]\r[[Sender.ZipCode]] [[Sender.Location]]\r[[Sender.Country]]\r" 字符串还可以包含空格和理论上的任何其他字符。所以我真的需要匹配[[单词]] 我需要的是这样一个文本数组 "[[Sender.Name]]", "[[Sender.AdditionalInfo]]

我需要一些关于C中正则表达式的帮助

我有以下字符串

"[[Sender.Name]]\r[[Sender.AdditionalInfo]]\r[[Sender.Street]]\r[[Sender.ZipCode]] [[Sender.Location]]\r[[Sender.Country]]\r"

字符串还可以包含空格和理论上的任何其他字符。所以我真的需要匹配[[单词]]

我需要的是这样一个文本数组

"[[Sender.Name]]",
"[[Sender.AdditionalInfo]]",
"[[Sender.Street]]",
// ... And so on. 
我非常确信,这是完全可行的:

var stringArray = Regex.Split(line, @"\[\[+\]\]")
我真是太蠢了,找不到正确的正则表达式。拆分调用

这里有人能告诉我在我的例子中使用的正则表达式吗


正如您所知,我对正则表达式没有那么丰富的经验:

为什么不按照\r\n进行拆分

您不需要正则表达式,只需使用标准字符串函数即可

string[] delimiters = {@"\r"};
string[] split = line.Split(delimiters,StringSplitOptions.None);
您正在使用的正则表达式\[\[+\]\]将捕获:literal[s 2或更多,然后是2 literal]s

正则表达式解决方案捕获双精度和双精度内的所有非-s,括号内的字符串不应为空,我猜?并将MatchCollection强制转换为列表或数组以下是一个列表示例:

var str = "[[Sender.Name]]\r[[Sender.AdditionalInfo]]\r[[Sender.Street]]\r[[Sender.ZipCode]] [[Sender.Location]]\r[[Sender.Country]]\r";
var rgx22 = new Regex(@"\[\[[^]]+?\]\]");
var res345 = rgx22.Matches(str).Cast<Match>().ToList();
输出:


如果要获取[[…]]块,请执行匹配


只是根据\r进行拆分。您能提供完整的预期输出吗?字符串还可以包含空格和理论上的其他单词。因此我认为寻找[[关键字]]并去掉其余的更明智。您不需要正则表达式来完成此操作,只需使用。
Regex rgx = new Regex(@"\[\[.*?\]\]");
foreach (Match m in rgx.Matches(input))
Console.WriteLine(m.Groups[0].Value);