正则表达式以匹配维度规范

时间:2010-09-27 19:32:22

标签: java regex

我需要一些帮助来编写与之匹配的正则表达式:

  • 一个开头的方括号或数字作为第一个字符
  • 关闭方括号(如果有开口方括号)或编号(如果开口是数字)作为最后一个字符
  • 至少有一个逗号分隔两个没有空格的数字,如果有更多逗号,则它们必须分隔数字而不留空格

示例匹配:

  • 1,1
  • [1,1]
  • [1,1,2,3]

不匹配:

  • [1,1
  • 1,1
  • [1,2,2]
  • 并[1,2,]

1 个答案:

答案 0 :(得分:1)

假设“数字”是数字类\d的一次或多次出现,则一个正则表达式为:

^\d+(,\d+)+$|^\[\d+(,\d+)+\]$

“数字”的其他变体可能是[1-9][0-9]*,它不允许前导零,并且更接近十进制整数文字的C / C ++ / C#/ Java表示。例如,C / C ++ / C#/ Java中的前导零指定 octal 整数文字。在Java中,我认为0正式是十进制文字,所以更准确的表达式是0|[1-9][0-9]*而在C ++中0在技术上是八进制文字(我认为!)。

假设Java样式的整数文字,我们的表达式将变为:

^(0|[1-9][0-9]*)(,(0|[1-9][0-9]*)+)+$|^\[(0|[1-9][0-9]*)+(,(0|[1-9][0-9]*)+)+\]$

无论你做什么,你都需要决定在你的情况下构成“数字”的内容,这可能与你正在实施你的程序的编程语言相同或不同。

有用的链接: