匹配两个逗号分隔的数字,其中句点为尖括号内的小数分隔符

时间:2016-12-26 19:39:21

标签: c# regex

我试图在C#中构建一个正则表达式模式以匹配以下格式

  

<0.0,100000.0>

到目前为止提出了这个正则表达式

var regexItem = new Regex(@"[<(]*[0-9][.]*[0-9][,]*[0-9][.]*[0-9][>)]$");

但是这个正则表达式接受像<0,100000>

这样的东西

通常我想匹配数字需要有小数分隔符的范围。

修改:最后我使用了这个

var regexItem = new Regex(@"^[(<]\d+\.\d+,\d+\.\d+[)>]$");

感谢您的帮助

1 个答案:

答案 0 :(得分:2)

可能有助于简化此正则表达式以查看问题。

[0-9]实际上等于\d。此外,如果[]中只有一个值,则可以省略括号(只要内部的项目在需要时进行转义):因此[.] - &gt; \.

[<(]*\d\.*\d,*\d\.*\d[>)]$

现在看看这个我认为发生的事情是你把*放在一个元素之前而不是它之后。点也应该被转义(因为它们实际上是指任何字符,而不是字面点)

所以这应该可以做到这一点:

^[<(]\d+\.\d+,\d+\.\d+[>)]$

var regexItem = new Regex(@"^[<(]\d+\.\d+,\d+\.\d+[>)]$");

您必须自己修改正则表达式以符合您的确切需求,这只会解决您在问题中指定的问题。