为“(5 + x)”这样的字符串创建regEx

时间:2013-01-13 14:49:21

标签: java regex

我想明白,我的表达是括号内的。我创建了这样的regExp -

public static final String complexValue = "([-]?[(].+[)])"

但我在输入字符串上失败了 -

String st = "(4+6)+(3)"

有没有办法创建这样的regExp ,字符串(5+x)与其匹配,字符串(4+6)+(3)没有。

2 个答案:

答案 0 :(得分:2)

字面答案是肯定的:"^\\(5\\+x\\)$"做你所要求的,但不是你想要的。

问题是,目前还不清楚你想要((4)+(6)):它应该匹配吗?您是否希望允许无限的括号嵌套,或者只允许一对外括号而不允许使用内括号?

在第一种情况下,您的语法是不规则的,因此正则表达式无法解析它。 (我似乎记得有“不规则正则表达式”方言,但IIRC java实现不在其中)。

在第二种情况下,"^\\([^)]+\\)$"之类的东西可以胜任。

答案 1 :(得分:0)

所以你想匹配括号括起来的两个数字的加法?然后以下内容应该有效。

^\(\-?\d+\+\-?\d+\)$