2012-09-01 26 views
3

我正在使用正則表達式來解析某種語法的字符串。Java正則表達式重複(Dice符號解析)

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

我想這個匹配字符串一樣:

2d6 
4d4+1 
2d12*2-1 

的問題是,它也匹配在X是結尾的字符串 - * /例如:

3d4- 
+0

您使用的匹配器#尋找或匹配器#匹配對你輸入你的應用模式?前者與你輸入的一部分相匹配,後者與你的整個輸入匹配。 – Charlie

回答

1

使用本正則表達式(\d+)(d)(\d+)(([-+*/])(\d+))

但是2d12x2-1不匹配,你的正則表達式中不存在x,你不會說布特是什麼,對於包括x變化正則表達式來(\d+)(d)([\dx]+)(([\+\-\*\/])(\d+))

編輯:

可能是你需要錨?設置你的正則表達式^$

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

不應該有一個* last來允許重複最後一部分?除此之外,是不是我已經有了相同的模式? – EClaesson

+0

對不起,x本來是一個*。我將編輯我的問題。 – EClaesson