首页 > 解决方案 > 正则表达式在字符串中捕获小数

问题描述

所以我有一个由文本、特殊字符和小数混合组成的字符串:

2018-12-18 00:00:00 : TEXT0        TEXT1 0,123 - TEXT2 1,123 - TEXT3 2,123 - TEXT4 3,123

我对可以捕获的东西感兴趣2,123。到目前为止,我已经尝试过类似的东西:

(\d{4}-\d{2}-\d{2} \d{2}:\d{2}:\d{2}) : (V04\.10\w+|\w+ ) \w+ \d+,\d{3} - \w+ \d+,d{3} - \w+ (\d+,d{3}) - \w+ \d+,d{3}

但这似乎不起作用。我在这里又捕获了两组,一组用于前面的日期,一组用于前面的日期TEXT0。他们自己工作得很好。有什么提示吗?

我坐在 .NET 4.5.2 中。

标签: .netregexregex-group

解决方案


似乎您的正则表达式中只有几个拼写错误,您只写d而不是\d打算捕获数字,并且在一个地方有多个空格,但您只写了一个空格,因此它不匹配。

从此更改您的正则表达式,

(\d{4}-\d{2}-\d{2} \d{2}:\d{2}:\d{2}) : (V04\.10\w+|\w+ ) \w+ \d+,\d{3} - \w+ \d+,d{3} - \w+ (\d+,d{3}) - \w+ \d+,d{3}

对此,

(\d{4}-\d{2}-\d{2} \d{2}:\d{2}:\d{2}) : (V04\.10\w+|\w+) +\w+ \d+,\d{3} - \w+ \d+,\d{3} - \w+ (\d+,\d{3}) - \w+ \d+,\d{3}

它将按照您的预期开始匹配和捕获数据。

现场演示


推荐阅读