gpt4 book ai didi

c# - 通过括号之间的逗号对字符串进行分组

转载 作者:太空狗 更新时间:2023-10-30 00:12:43 25 4
gpt4 key购买 nike

回应:Regular Expression to find a string included between two characters while EXCLUDING the delimiters

您好,我正在寻找适用于我的字符串(包括方括号)的正则表达式模式:

[1,2,3,4,5] [abc,ef,g] [0,2,4b,y7]
可以是任何东西,包括单词、数字、非单词在一起或分开。

我希望通过 \[(.*?)\] 获取括号之间的组但是正则表达式模式是什么,它将给我括号之间的组和用逗号分隔的子组字符串,以便结果可能如下??

Group1 : 1,2,3,4,5 Group1: 1 Group2: 2 Group3: 3 Group4: 4 Group5: 5Group2 : abc,ef,g Group1: abc Group2: ef Group3: getc ..

谢谢你的帮助

最佳答案

我同意@Dav 的观点,您最好在每个方括号组上使用 String.Split。

但是,您可以使用单个正则表达式提取所有数据:

(?:\s*\[((.*?)(?:,(.+?))*)\])+

使用此表达式,您将必须处理所有 captures每个 group获取所有数据。例如,在您的字符串上运行以下代码:

var regex = new Regex(@"(?:\s*\[((.*?)(?:,(.+?))*)\])+");
var match = regex.Match(@"[1,2,3,4,5] [abc,ef,g] [0,2,4b,y7]");

for (var i = 1; i < match.Groups.Count; i++)
{
var group = match.Groups[i];
Console.WriteLine("Group " + i);

for (var j = 0; j < group.Captures.Count; j++)
{
var capture = group.Captures[j];

Console.WriteLine(" Capture " + j + ": " + capture.Value
+ " at " + capture.Index);
}
}

这会产生以下输出:

Group 1  Capture 0: 1,2,3,4,5 at 1  Capture 1: abc,ef,g at 13  Capture 2: 0,2,4b,y7 at 24Group 2  Capture 0: 1 at 1  Capture 1: abc at 13  Capture 2: 0 at 24Group 3  Capture 0: 2 at 3  Capture 1: 3 at 5  Capture 2: 4 at 7  Capture 3: 5 at 9  Capture 4: ef at 17  Capture 5: g at 20  Capture 6: 2 at 26  Capture 7: 4b at 28  Capture 8: y7 at 31

第 1 组为您提供每个方括号组的值,第 2 组为您提供每个方括号组中匹配的第一个项目,第 3 组为您提供所有后续项目。您将必须查看捕获的索引以确定哪个项目属于每个方括号组。

关于c# - 通过括号之间的逗号对字符串进行分组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2651680/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com