我正在尝试找到正确的正则表达式来提取下面字符串中.
后面的数字。例如,第一行应该返回和数组1 1 1 1 1
,第二行应该返回2 1 0 1 2
。我似乎无法找到正确的正则表达式来实现这一目标。任何帮助将不胜感激。
line = 0.1, 1.1, 2.1, 3.1, 4.1 // payline 0
line = 0.2, 1.1, 2.0, 3.1, 4.2 // payline 1
到目前为止,我有下面的代码,但它只是返回刺痛中的所有数字。 例如,第一行返回0 1 1 1 2 1 3 1 4 1 0
,第二行返回0 2 1 1 2 0 3 1 4 2 1
foreach (var line in Paylines)
{
int[] lines = (from Match m in Regex.Matches(line.ToString(), @"d+")
select int.Parse(m.Value)).ToArray();
foreach (var x in lines)
{
Console.WriteLine(x.ToString());
}
}
您可以使用基于查看的正则表达式解决方案:
@"(?<=.)d+"
它匹配点后的 1+ 位数字,而无需将点放入匹配值中。
请参阅正则表达式演示。
在 C# 中,您可以使用
var myVals = Regex.Matches(line, @"(?<=.)d+", RegexOptions.ECMAScript)
.Cast<Match>()
.Select(m => int.Parse(m.Value))
.ToList();
请参阅 C# 演示。
传递RegexOptions.ECMAScript
选项以使d
仅匹配[0-9]
范围内的 ASCII 数字,并避免匹配其他 Unicode 数字。