我有一系列字符串,例如Name
,Groups[0].Id
,Types[11].Name
。
我想过滤带有方括号的字符串并将它们分成两部分。例如,Groups[0].Id
转换为Groups
和Id
。
如何使用正则表达式找到带方括号的字符串?
答案 0 :(得分:4)
你可以试试这个
Regex.Split(input,@"\[.*?\][.]");
答案 1 :(得分:2)
仅用于分割像
这样的单个字符串string value = "Groups[0].Id";
使用
string[] parts = Regex.Split(value, "\[\d+\]\.");
说明:您必须使用反斜杠转义方括号和点字符(它们在正则表达式中具有特殊含义)并且\ d +将仅接受一串数字数字('0'..'9')至少一位数。
链接:
答案 2 :(得分:1)
我不确定您是否要拆分问题标题隐含的字符串,或者过滤列表,这似乎是您最后提出的要求。您可以使用括号和此正则表达式的句点拆分数组的每个元素。这个正则表达式并不假设索引只是数字 - 例如它将允许一个由字符串键入的数组。
Regex.Split(a, @"\[[^\]]+\]\.");
您可以使用LINQ在一行中过滤数组。
string[] ary = new string[3] {"Name", "Groups[0].Id", "Types[11].Name" };
ary = ary.Where(a => Regex.Match(a, @"\[[^\]]+\]\.").Success).ToArray();
foreach (string str in ary)
{
Console.WriteLine(str);
}