根据正则表达式拆分字符串

时间:2013-07-31 11:48:57

标签: c# regex

我有一系列字符串,例如NameGroups[0].IdTypes[11].Name

我想过滤带有方括号的字符串并将它们分成两部分。例如,Groups[0].Id转换为GroupsId

如何使用正则表达式找到带方括号的字符串?

3 个答案:

答案 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, @"\[[^\]]+\]\.");

REY

您可以使用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);
}