当前位置: 首页 > 知识库问答 >
问题:

正则表达式模式来获取方括号内的所有数字?

应涵容
2023-03-14

我试图创建一个正则表达式模式来获取给定字符串中的所有数字,这些数字位于方括号内并用逗号分隔。输出应该是这样的,

数字1=45

数字2=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();
}

我是否应该创建两个模式,一个是贪婪模式,然后是第二个模式,以搜索贪婪输出中由逗号分隔的所有数字?还是只创建一个模式更有效?

共有1个答案

方宁
2023-03-14

你说你的绳子是

位于方括号之间并由逗号分隔的字符串。

我猜输入是这样的

[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(',');

并显示该字符串数字1=45

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

C#6语法

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

C#

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

另一个inbont示例: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#

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    
 类似资料:
  • 问题内容: 我想使用正则表达式获取所有括号内的所有子字符串。 作为字符串“ foo(bar)foo(baz)golang”的示例,我想要“ bar”和“ baz” 在python中我可以做 怎么做呢? 问题答案: 的软件包不支持零宽度环顾四周。您可以通过以下功能利用捕获的分组: 输出: 正则表达式: 匹配文字 匹配串高达旁边,并把比赛以捕获组,在这里你可以使用非greeedy比赛太 匹配文字 去游

  • 问题内容: 输入线在下面 你能帮我写一个Java正则表达式来提取 从上方输入线? 问题答案: 更加简洁:

  • 上面的正则表达式返回括号之间的文本。 如: 如何重写上面的正则表达式,所以我提供了一个类似的字符串,它将返回。i、 e带括号的部分,其中包含大括号中的字符串。

  • 问题内容: 我想编写一个简单的正则表达式来检查给定字符串中是否存在任何特殊字符。我的正则表达式可以工作,但是我不知道为什么它还包括所有数字,所以当我输入一些数字时会返回错误。 我的代码: 问题答案: 请不要那样做…… 像这样的小Unicode BABY ANGEL 快要死了!◕◡◕(←这些不是图像)(箭头也不是!) 而且您正在杀死20年的DOS:-)(最后一个笑脸称为WHITE SMILING F

  • 我试图匹配,使用正则表达式,所有逗号(后跟一个空格):在任何括号或方括号之外,即逗号不应该包含在括号或方括号中。 目标字符串是。在这种情况下,它应该匹配第一个逗号和最后一个逗号(介于和之间,和)。 所以我可以拆分分成,and,不会因此而使括号/括号不平衡。 为此,似乎很难单独使用正则表达式。有没有其他办法解决这个问题? 我使用的正则表达式: 但是这个表达式将匹配另外两个不应该匹配的逗号(第二个和第

  • 问题内容: 我有这种形式的内容 我需要数组中花括号之间的所有值,如下所示: 我尝试使用以下代码: 但是我从这里的第一个大括号到内容中找到的最后一个大括号都进入了这里。如何获得上述格式的数组?我知道我使用的模式是错误的。为了得到上面所示的期望输出,应该给出什么? 问题答案: 像这样… 输出: