C#正则表达式搜索此值

C#正则表达式搜索此值,c#,C#,如何获取此字符串文本中的数字 字符串stringvalue=“[3=000][98=000][299=000][120=000][012=000][92=000][93=000][04=000]” 是另一个vay字符串模式=“([)([0-2][0-9][0-9])(=)”,这是模式(无替换)如果我没听错的话,你是说底部都是一个字符串?如果是这样的话,就不需要正则表达式(尽管你可以使用它),但我只需要使用子字符串,因为你似乎希望它们分开 i、 e.string str03=ThatString.

如何获取此字符串文本中的数字

字符串stringvalue=“[3=000][98=000][299=000][120=000][012=000][92=000][93=000][04=000]”


是另一个vay字符串模式=“([)([0-2][0-9][0-9])(=)”,这是模式(无替换)

如果我没听错的话,你是说底部都是一个字符串?如果是这样的话,就不需要正则表达式(尽管你可以使用它),但我只需要使用子字符串,因为你似乎希望它们分开

i、 e.string str03=ThatString.Substring(1,2)

str03将等于“03”

\[(\d+=\d+\]

您要查找的号码将位于每场比赛的第一组:

var input = "[03=000][98=000][999=000][120=000][01=000][92=000][93=000][1004=000]";
var regex = @"\[(\d+)=\d+\]";

var matches = Regex.Matches(input, regex);

foreach (Match m in matches)
{
    Console.WriteLine(m.Groups[1].Value);
}

有时我发现正则表达式有点讨厌。你可以考虑使用朴素的字符串处理而不是匹配正则表达式。这肯定会为你的输入工作。

string val  = "[03=000][98=000][999=000][120=000][01=000][92=000][93=000][1004=000]";

string[] numbers = val.Split(new []{ '[', ']', '=' }, StringSplitOptions.RemoveEmptyEntries)
                      .Where((v, i) => i % 2 == 0)
                      .ToArray();

Console.WriteLine(string.Join(Environment.NewLine, numbers));
印刷品:

03
98
999
120
01
92
93
1004

您将如何使用该方法查找所有发生的事件?而且,数字的长度不同。Substring()中的第一个参数是字符串中要开始捕获的索引,第二个是要结束的索引。因此,您只需切换这些索引。切换基于什么?需要什么数字。例如,假设您有以下字符串:test=“abcdefg”并且需要“efg”,您只需执行以下操作:string fg=test.Substring(5,7);我不会问你如何得到所有的数字,直接给出一个
-1
我不确定我是否理解正确。你将这些整数存储在什么类型的数据/收集类型中?是
int[]
,或
列表
,或其他什么?您的目标是将该列表转换为像最后一行一样的字符串吗?到目前为止您尝试了什么?Markus我只需要03 98 999 120 01 92 93 1004个值…我在代码上方尝试正则表达式,没有替换。您的问题是什么?上面的代码正好提供了这些值。我不知道仅使用替换方法模式给出值。我尝试在代码上方使用正则表达式,但不使用替换。
03
98
999
120
01
92
93
1004