我怎么写这个正则表达式?

时间:2014-11-08 00:28:03

标签: c# regex

如果我有这个字符串:

18.62 PURCHASE REF 1 829400493183

我想要的就是18.62。如果没有得到剩余的字符串,我该怎么做? (例如,没有获得829400493183

如果不使用正则表达式更容易做到这一点,我也愿意接受建议。

标记为C#也是因为这是我正在处理的应用程序。

3 个答案:

答案 0 :(得分:4)

可以在没有RegEx的情况下完成,假设18.62与其余部分隔开一个空格:

string s = "18.62 PURCHASE REF 1 829400493183";
string r = s.Split()[0];

答案 1 :(得分:1)

这是一个不同的解决方案,因为您实际上并不需要Split

var str = "18.62 PURCHASE REF 1 829400493183";
var value = str.Substring(0, str.IndexOf(' '));

顺便说一句,Regex解决方案看起来像这样:

var str = "18.62 PURCHASE REF 1 829400493183";
var value = Regex.Match(str, @"^-?[0-9]+(?:\.[0-9]+)").Value;

这会验证数字,但仍然过度,因为简单的int.TryParse可以完成这项工作。

您只需添加错误检查(IndexOf返回-1,Match返回null。)

答案 2 :(得分:0)

似乎op想要第一个数字而不是第一个单词。如果是,则使用以下正则表达式并从组索引1获取第一个数字。

Regex rgx = new Regex(@"^\D*(\d+(?:\.\d+)?)");

DEMO