C# 如何用正则表达式分隔数字和字符?
我有以下正则表达式字符串C# 如何用正则表达式分隔数字和字符?,c#,regex,C#,Regex,我有以下正则表达式字符串 (\d+)(((.|,)\d+)+)?(ms|s| ms| s) 它验证用户是否在毫秒和秒内输入了正确的字符串。 可能值的示例包括 100毫秒 100秒 100毫秒 100秒 52.55秒 对于进一步的操作,我需要分离字符串和数字,例如,如果输入的值是123.45ms,我应该得到123.45和ms 到现在为止,我只得到了数字,字符串丢失了 我可以将数字和字符串分为两个不同的步骤,但我有兴趣立即执行,有什么建议吗?您可以使用组: string s =
(\d+)(((.|,)\d+)+)?(ms|s| ms| s)
它验证用户是否在毫秒和秒内输入了正确的字符串。
可能值的示例包括
- 100毫秒
- 100秒
- 100毫秒
- 100秒
- 52.55秒
123.45ms
,我应该得到123.45
和ms
到现在为止,我只得到了数字,字符串丢失了
我可以将数字和字符串分为两个不同的步骤,但我有兴趣立即执行,有什么建议吗?您可以使用组:
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]);
}
您可以使用组:
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]);
}
你很接近。您已经在指定匹配组。看看酒店。您离酒店很近。您已经在指定匹配组。看看属性。我认为您确实得到了数字和单位,问题是它被放入了一个比您想象的更大的数组元素中。我建议将您的正则表达式修改为:
(\d+)([\.|,]\d+)?\s?(m?s)
现在,您的数字的整数为1,小数点为2(如果不是,则为空),单位为3。房间稍微整洁了一点,你就再也没有空间了
或者,您可以使用:
(\d+[\.|,]\d+|\d+)\s?(m?s)
如果你总是希望你的数字在索引1,单位在2。我认为你确实得到了数字和单位,问题是它被放入了一个比你想象的更大的数组元素中。我建议将您的正则表达式修改为:
(\d+)([\.|,]\d+)?\s?(m?s)
现在,您的数字的整数为1,小数点为2(如果不是,则为空),单位为3。房间稍微整洁了一点,你就再也没有空间了
或者,您可以使用:
(\d+[\.|,]\d+|\d+)\s?(m?s)
如果你总是希望你的数字在索引1,单位在2。不要把
放在字符类中,除非你是故意的,也不需要在字符类中转义
。不要把
放在字符类中,除非你是故意的,也不需要在字符类中转义
。