正则表达式捕获十进制数忽略字符

时间:2015-04-20 09:28:15

标签: c# regex

输入字符串:

----------------------
Test Id:         
Some Id: 718489  

        517.1[2] g  
----------------------

表达式(\d+\.\d)捕获517.1。 我需要的是捕获517.12(没有[])。这是否可以使用正则表达式?

2 个答案:

答案 0 :(得分:3)

正如@Vedran在评论中所述。你无法删除正则表达式中的括号,你可以做的最好就是最终获得两次捕获。

但如果您能够处理回复,这可以解决您的问题:

var number = float.Parse(Regex.Match(@"(\d+\.(\d|\[|\])+)").Value.Replace("[", "").Replace("]", ""), CultureInfo.InvariantCulture.NumberFormat); 

答案 1 :(得分:1)

您可以将整数与括号匹配,然后将[替换为string.Empty

var input = "----------------------\r\nTest Id:         \r\nSome Id: 718489  \r\n\r\n        517.1[2] g  \r\n----------------------";
var rx = new Regex(@"(?>\b\d+\.\d\[\d+\b)");
var res = rx.Match(input).Value.Replace("[", string.Empty);

输出:

enter image description here

请注意,(?>...)原子分组会删除我们在这种情况下并不感兴趣的回溯。

相关问题