gpt4 book ai didi

c# - 正则表达式模式来获取方括号之间的所有数字?

转载 作者:行者123 更新时间:2023-12-04 14:30:52 25 4
gpt4 key购买 nike

我正在尝试创建一个正则表达式模式以从给定字符串中获取方括号之间并以逗号分隔的所有数字。输出应该是这样的,

Number1 = 45

Number2 = 66

等等...到目前为止,我所拥有的只是一个模式,贪婪地捕获方括号之间的一切。

string input3;
//string pattern = @"\b\w+es\b";
string pattern = @"\[(.*?)\]";
//Regex regex = new Regex("[*]");
Console.WriteLine("Enter string to search: ");
input3 = Console.ReadLine();
//Console.WriteLine(input3);
List<string> substrings = new List<string>();
int count = 1;
foreach (Match match in Regex.Matches(input3, pattern)) {
string substring = string.Format("Number{0} = '{1}'",count,match);
count++;
Console.WriteLine(substring);
substrings.Add(substring);
}
string[] subStringArray = substrings.ToArray();
}

我是否应该只创建两个模式,一个是贪婪模式,然后是第二个模式来搜索贪婪输出以查找所有以逗号分隔的数字?或者只创建一个模式会更有效吗?

最佳答案

你说你的字符串是

string which are in between square brackets and separated by commas.

我猜输入是这样的

[1,2,3,4,5,6]

所以你可以使用这个正则表达式来获取数字

var numbers = Regex.Match("[1,2,3,4,5,6]", @"\[(?<numbers>[\d,]+)\]").Groups["numbers"].Value;

然后用,拆分得到数字的集合

var collectionOfNumbers = numbers.Split(',');

并显示这个字符串 Number1 = 45

让我们使用一点 LINQ 来做到这一点

C#6 语法

var strings = numbers.Split(',').Select((number, i) => $"Number{i + 1} = {number}");
Console.WriteLine(string.Join("\n", strings))

C# <= 5 语法

var strings = numbers.Split(',').Select((number, i) => string.Format("Number{0} = {1}", i+1, number));
Console.WriteLine(string.Join("\n", strings))

这是输出

Number1 = 1
Number2 = 2
Number3 = 3
Number4 = 4
Number5 = 5
Number6 = 6

另一个输入法示例:Foo Bar [45,66]

C#6 语法

var numbers = Regex.Match("Foo Bar [45,66]", @"\[(?<numbers>[\d,]+)\]").Groups["numbers"].Value;
var strings = numbers.Split(',').Select((number, i) => $"Number{i + 1} = {number}");
Console.WriteLine(string.Join("\n", strings))

C# <= 5 语法

var numbers = Regex.Match("Foo Bar [45,66]", @"\[(?<numbers>[\d,]+)\]").Groups["numbers"].Value;
var strings = numbers.Split(',').Select((number, i) => string.Format("Number{0} = {1}", i+1, number));
Console.WriteLine(string.Join("\n", strings))

输出是

Number1 = 45
Number2 = 66

关于c# - 正则表达式模式来获取方括号之间的所有数字?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34644587/

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