Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/regex/20.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java正则表达式重复(骰子符号解析)_Java_Regex - Fatal编程技术网

Java正则表达式重复(骰子符号解析)

Java正则表达式重复(骰子符号解析),java,regex,Java,Regex,我使用regexp解析一个特定语法的字符串 Pattern.compile("(\\d+)(d)(\\d+)(([\\+\\-\\*\\/])(\\d+))*"); // The regexp pattern 我希望它匹配字符串,如: 2d6 4d4+1 2d12*2-1 问题是,它还匹配以x-*/结尾的字符串,例如: 3d4- 使用此正则表达式(\d+)(d)(\d+)([-+*/])(\d+) 但是2D12x-1将不匹配,在您的正则表达式中不存在x,并且您不会对它说任何话,因为incl

我使用regexp解析一个特定语法的字符串

Pattern.compile("(\\d+)(d)(\\d+)(([\\+\\-\\*\\/])(\\d+))*"); // The regexp pattern
我希望它匹配字符串,如:

2d6
4d4+1
2d12*2-1
问题是,它还匹配以x-*/结尾的字符串,例如:

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

但是2D12x-1将不匹配,在您的正则表达式中不存在x,并且您不会对它说任何话,因为include
x
将正则表达式更改为
(\d+)([\dx]+)(([\+-\*\/])(\d+)

编辑:

也许你需要锚?在正则表达式中设置
^
$

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

难道不应该有一个*last来允许重复最后一部分吗?除此之外,这不是我已经拥有的相同模式吗?您是否使用Matcher#find或Matcher#matches对您的输入应用您的模式?前者匹配部分输入,后者匹配整个输入。