我正在使用 C# 从 XML 文件中提取字符串,并且需要 "I[1,2]"
中的第二个数字,即 2
。
Regex regex = new Regex(@"\[.*?\]");
MatchCollection matches = regex.Matches(inputChannel.Value);
var result = matches[0].Value.Split().Where(x => x.StartsWith("[") && x.EndsWith("]"))
.Select(x => x.Replace("[", string.Empty).Replace("]", string.Empty))
.ToList();
其中inputChannel.value =“I[1;2]”
此代码获取两个数字并将它们粘贴到一个列表中,但是有没有办法拆分这两个数字并将它们放入一个列表中?
最佳答案
您可以使用捕获组来获取第二个数字,而不是使用拆分。
I\[[0-9]+;([0-9]+)]
-
I\[
匹配I[
-
[0-9]+;
匹配 1+ 位数字 0-9 和;
-
([0-9]+)
捕获第1组,匹配1+数字0-9 -
]
匹配]
字符
查看regex demo .
string pattern = @"I\[[0-9]+;([0-9]+)]";
string input = @"I[1;2]";
Match m = Regex.Match(input, pattern);
Console.WriteLine(m.Groups[1].Value); // 2
或者使用环视:
(?<=I\[[0-9]+;)[0-9]+(?=])
-
(?<=I\[[0-9]+;)
正向回顾,断言I[
, 1+ 位数字后跟;
向左 -
[0-9]+
匹配 1+ 位数字 0-9 -
(?=])
正向前瞻,断言]
向右
查看另一个regex demo .
string pattern = @"(?<=I\[[0-9]+;)[0-9]+(?=])";
string input = @"I[1;2]";
Match m = Regex.Match(input, pattern);
Console.WriteLine(m.Value); // 2
关于c# - 有没有办法使用正则表达式来分割 I[1,2]?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/66764413/