正则表达式捕获数字字段

时间:2015-01-08 04:33:52

标签: c# regex

我正在寻找一个正则表达式,我可以提取符合条件的字符串部分。

字符串查找"长度为32.00 mm"。

我希望能够得到" 32.00"。基本上是"之前的第一个数值。 mm"。以某种方式,可以这样做:

string test = "The length is 32.00 mm";

      int idx = test.IndexOf(" mm ") - 1;
      int endIdx = idx;
      while (idx > 0)
      {
        Char c = test.ElementAt(idx);
        if (Char.IsDigit(c) == false && c != '.')
        {
          string data = test.Substring(idx + 1, endIdx - idx + 1);
          break;
        }
        idx--;
      }

你有更好的逻辑吗?

我可以按空格分割字符串并在" mm"之前选择条目。插槽。

谢谢,

1 个答案:

答案 0 :(得分:2)

好吧,你可以使用正向前瞻的正则表达式

\s[\d.]+(?=\s+mm)

喜欢这个

string test = "The length is 32.00 mm";
Console.WriteLine(Regex.Match(test, @"\s[\d.]+(?=\s+mm)").Value);

DEMO