我有以下的resumere表达式字符串
(\d+)(((.|,)\d+)+)?(ms|s| ms| s)
验证用户是否输入了正确的字符串毫秒和秒。 可能值的示例是
进一步操作我需要分隔字符串和数字,例如,如果输入的值是123.45ms
,我应该得到123.45
和ms
。
截至目前,我只收到了号码,字符串丢失了!
我可以在两个不同的步骤中分割数字和字符串,但我有兴趣立刻做,任何建议我该怎么办?
答案 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。