如何用RegEx分隔数字和字符?

时间:2011-11-30 06:01:30

标签: c# regex

我有以下的resumere表达式字符串

(\d+)(((.|,)\d+)+)?(ms|s| ms| s)

验证用户是否输入了正确的字符串毫秒和秒。 可能值的示例是

  • 100ms
  • 100s
  • 100 ms
  • 100 s
  • 52.55 s

进一步操作我需要分隔字符串和数字,例如,如果输入的值是123.45ms,我应该得到123.45ms

截至目前,我只收到了号码,字符串丢失了!

我可以在两个不同的步骤中分割数字和字符串,但我有兴趣立刻做,任何建议我该怎么办?

3 个答案:

答案 0 :(得分:4)

您使用群组:

        string s = "123.45ms";
        Match m = Regex.Match(s, @"(\d+([.,]\d+)?) *(ms|s)");

        if (m.Success)
        {
            Console.WriteLine(m.Groups[1]);
            Console.WriteLine(m.Groups[3]);
        }

答案 1 :(得分:2)

你非常接近。您已经指定了匹配组。看看Match.Groups属性。

答案 2 :(得分:1)

我认为你确实得到了数字和单位,问题是它被放入一个比你想象的更大的数组元素。我建议修改你的正则表达式:

(\d+)([\.|,]\d+)?\s?(m?s)

现在你的数字的整数为1,小数(如果它存在于2)(或者如果不存在则为空),单位为3.它会更整洁,你将不再获得你单位的空间。

或者你可以使用:

(\d+[\.|,]\d+|\d+)\s?(m?s)

如果你总是希望你的数字在索引1和单位在2。