如何用RegEx分隔数字和字符

本文关键字:字符 数字 分隔 何用 RegEx | 更新日期: 2023-09-27 18:16:05

我有以下正则表达式字符串

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

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

  • 100 ms
  • 100年代
  • 100ms
  • 100年代
  • 52.55 s

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

到目前为止,我只得到数字和字符串丢失!

我可以拆分数字和字符串在两个不同的步骤,但我有兴趣做一次,有什么建议我怎么做?

如何用RegEx分隔数字和字符

使用groups:

        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]);
        }

你很接近了。您已经指定了匹配组。看看Match。组属性。

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

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

现在你将你的数字的整数为1,十进制,如果它存在于2(或者它将是空的)和单位为3。这样更整洁一些,你的房间里也不会再有空间了。

也可以使用:

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

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