我需要一些关于C#中正则表达式的帮助
我有以下字符串
"[[Sender.Name]]\r[[Sender.AdditionalInfo]]\r[[Sender.Street]]\r[[Sender.ZipCode]] [[Sender.Location]]\r[[Sender.Country]]\r"
字符串也可以包含空格,理论上还包含任何其他字符。所以我真的需要匹配[[words]]。
我需要的是像这样的文本数组
"[[Sender.Name]]",
"[[Sender.AdditionalInfo]]",
"[[Sender.Street]]",
// ... And so on.
我很确定这完全可以用于:
var stringArray = Regex.Split(line, @"\[\[+\]\]")
我太傻了,无法为Regex.Split()调用找到正确的正则表达式。
这里的任何人都可以告诉我在我的案例中使用正确的正则表达式吗?
正如你所知道的那样,我不熟悉RegEx:)
答案 0 :(得分:6)
为什么不根据“\ r”拆分?
并且您不需要正则表达式,只需使用标准字符串函数
$cmd_options
答案 1 :(得分:1)
您正在使用的正则表达式(\[\[+\]\]
)将捕获:文字[
s 2或更多,然后是2个文字]
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();
输出:
答案 2 :(得分:1)
如果您想获得[[..]]
阻止,请进行匹配。
Regex rgx = new Regex(@"\[\[.*?\]\]");
foreach (Match m in rgx.Matches(input))
Console.WriteLine(m.Groups[0].Value);