我试图在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+[)>]$");
感谢您的帮助
答案 0 :(得分:2)
可能有助于简化此正则表达式以查看问题。
[0-9]
实际上等于\d
。此外,如果[]
中只有一个值,则可以省略括号(只要内部的项目在需要时进行转义):因此[.]
- &gt; \.
[<(]*\d\.*\d,*\d\.*\d[>)]$
现在看看这个我认为发生的事情是你把*
放在一个元素之前而不是它之后。点也应该被转义(因为它们实际上是指任何字符,而不是字面点)
所以这应该可以做到这一点:
^[<(]\d+\.\d+,\d+\.\d+[>)]$
var regexItem = new Regex(@"^[<(]\d+\.\d+,\d+\.\d+[>)]$");
您必须自己修改正则表达式以符合您的确切需求,这只会解决您在问题中指定的问题。