我有一个字符串数组,如Name
, Groups[0].Id
, Types[11].Name
.
我想过滤带有方括号的字符串并将它们分成两部分。例如,Groups[0].Id
进入 Groups
和Id
。
如何使用正则表达式找到带有方括号的字符串?
你可以试试这个
Regex.Split(input,@"\[.*?\][.]");
仅用于拆分单个字符串,例如
string value = "Groups[0].Id";
利用
string[] parts = Regex.Split(value, "\[\d+\]\.");
说明:您必须用反斜杠转义方括号和点字符(它们在正则表达式中具有特殊含义),并且 \d+ 将只接受一个数字字符串('0'..'9'),其中至少一个数字。
链接:
我不确定您是要拆分问题标题所暗示的字符串,还是要过滤似乎是您最后要问的列表。您可以使用正则表达式的括号和句点来拆分数组的每个元素。这个正则表达式不假设索引是单独的数字——例如,它将允许一个由字符串作为键的数组。
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);
}