输入字符串:
----------------------
Test Id:
Some Id: 718489
517.1[2] g
----------------------
表达式(\d+\.\d)
捕获517.1。
我需要的是捕获517.12(没有[])。这是否可以使用正则表达式?
答案 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);
输出:
请注意,(?>...)
原子分组会删除我们在这种情况下并不感兴趣的回溯。