如何从c#中的特定模式中拆分数字?

Nit*_*han 8 c# regex

我有一个具有以下格式的特定模式

string exp = "$(2.1)+$(3.2)-tan($(23.2)) * 0.5";
Run Code Online (Sandbox Code Playgroud)

使用此代码,我得到以下结果

var doubleArray = Regex
  .Split(str, @"[^0-9\.]+")
  .Where(c => c != "." && c.Trim() != "")
  .ToList();

//result
[2.1,3.2,23.2,0.5]
Run Code Online (Sandbox Code Playgroud)

我想分开号码$().即预期的结果

[2.1,3.2,23.2]
Run Code Online (Sandbox Code Playgroud)

我怎样才能做到这一点?

Dmi*_*nko 9

我建议提取Matches而不是Split:

string exp = "$(2.1)+$(3.2)-tan($(23.2)) * 0.5";

var doubleArray = Regex
  .Matches(exp, @"\$\((?<item>[0-9.]+)\)")
  .OfType<Match>()
  .Select(match => match.Groups["item"].Value)
  .ToList();

Console.WriteLine(string.Join("; ", doubleArray));
Run Code Online (Sandbox Code Playgroud)

结果:

2.1; 3.2; 23.2
Run Code Online (Sandbox Code Playgroud)