C#正则表达式在特定条件下获得数字

时间:2017-07-21 04:59:21

标签: regex

我想在特定位置获取字符串中的数字,我不能这样做。

示例:

STRING:

  

180 MATTHEW SANDLER DON 30.00 1.361,67 00

     

181 JOHN 30.00 5.987,00 99

     

182 LUCY P. 30.00 3.888,98 71

我想在每一行返回数字:

1.361,67

5.987,00

3.888,98

不幸的是,该名称具有可变数量的空格,否则它将是一个简单的string.Split(' ')问题

有人知道该怎么做吗?

2 个答案:

答案 0 :(得分:1)

以下模式应与示例中的值匹配:

\b\S*,\d+\b

示例

http://rextester.com/LZVQN62207

答案 1 :(得分:1)

如果我们在概念上将您想要匹配的术语定义为每行末尾最后两个(或更多?)数字之前的最后一个术语,那么我们可以使用以下正则表达式模式:

(\d+\.\d+,\d+) \d+$

括号中的数量将捕获,并在正则表达式在C#中运行后可用。

string input = "180 MATTHEW SANDLER DON 30.00 1.361,67 00";
var groups = Regex.Match(input,@"(\d+\.\d+,\d+) \d+$").Groups;
var x1 = groups[1].Value;
Console.WriteLine(x1);

在这里演示:

Rextester