Java Regex重复(Dice表示法解析)

时间:2012-09-01 17:22:07

标签: java regex

我正在使用regexp来解析某种语法的字符串。

Pattern.compile("(\\d+)(d)(\\d+)(([\\+\\-\\*\\/])(\\d+))*"); // The regexp pattern

我希望这匹配像:

这样的字符串
2d6
4d4+1
2d12*2-1

问题是,它还匹配以x - * /结尾的字符串,例如:

3d4-

1 个答案:

答案 0 :(得分:1)

使用此正则表达式(\d+)(d)(\d+)(([-+*/])(\d+))

但是2d12x2-1不匹配,x在您的正则表达式中不存在,并且您没有说任何内容,因为包含x将正则表达式更改为(\d+)(d)([\dx]+)(([\+\-\*\/])(\d+))

编辑:

你可能需要锚吗?在你的正则表达式中设置^$

Pattern.compile("^(\\d+)(d)(\\d+)(([-+*/])(\\d+))*$");