【发布时间】:2010-09-27 19:32:21
【问题描述】:
我需要一些帮助来编写一个匹配的正则表达式:
- 一个左方括号或数字作为第一个字符
- 右方括号(如果有左方括号)或数字(如果开头是数字)作为最后一个字符
- 至少一个逗号分隔两个数字而不用空格,如果逗号更多,它们必须是分隔数字而不是空格
示例匹配:
- 1,1
- [1,1]
- [1,1,2,3]
不匹配:
- [1,1
- 1, 1
- [1, 2,2]
- [1,2,]
【问题讨论】:
-
这将有助于展示您的尝试。
我需要一些帮助来编写一个匹配的正则表达式:
示例匹配:
不匹配:
【问题讨论】:
假设“数字”是数字类\d 的一次或多次出现,一个正则表达式将是:
^\d+(,\d+)+$|^\[\d+(,\d+)+\]$
“数字”的其他变体可能是 [1-9][0-9]*,它不允许前导零,并且更接近 十进制 整数文字的 C/C++/C#/Java 表示。例如,C/C++/C#/Java 中的前导零表示 八进制 整数文字。在 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]*)+)+\]$
无论您做什么,您都需要确定在您的情况下什么构成“数字”,它可能与您实现程序所用的编程语言相同,也可能不同。
有用的链接:
【讨论】:
^ 和 $)来解决这个问题。对此感到抱歉。