如何用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.45
和ms
。
到目前为止,我只得到数字和字符串丢失!
我可以拆分数字和字符串在两个不同的步骤,但我有兴趣做一次,有什么建议我怎么做?
使用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。