我该怎么写Regex呢

本文关键字:Regex | 更新日期: 2023-09-27 18:29:48

如果我有这个字符串:

18.62 PURCHASE REF 1 829400493183

我只想拉出18.62。如果没有得到剩下的绳子,我该怎么做?(例如,不获取829400493183.

如果不使用regex更容易做到这一点,我也愿意接受建议。

标记为C#也是因为这将进入我正在开发的应用程序。

我该怎么写Regex呢

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

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

这里有一个不同的解决方案,因为您并不真正需要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)。

似乎op想要第一个数字而不是第一个单词。如果是,则使用下面的regex并从组索引1中获取第一个数字。

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

演示