2013-10-27 67 views
1

我想編寫一個正則表達式在我的D & D遊戲的虛擬桌面(VTT)中使用。特定的正則表達式滾動替換和計算

輸入是一個標準字符串:「hp」; 後跟一個數字(範圍1-2000 ish); 後跟括號內的骰子表達式(例如2d10 + 4表示擲骰2個骰子,並將兩個骰子的總和相加)。

馬力和骰子表達之間的數字是骰子表達的平均得分 - 在這個例子將是5.5(在10個骰子的平均分數)次二加四= 15輸入字符串例如:

hp 15(2d10 + 4)

我想要一個正則表達式來識別字符串,並用可能的最大滾動替換平均數。在上面的例子中,用24替換15。用正則表達式可能嗎?我的VTT是基於Java的 - 我是否需要在識別字符串之後計算最大值,然後用Java而不是正則表達式替換數字?

我想我有單個塊,但取而代之的是失敗的我:

查找「HP」 後的數字? s] [0-9] +

找到2d10 + 4 [0-9] + d [0-9] + \ s?[\ + \ - ]? \ S?[^ A-ZA-Z] [0-9]?

回答

0

是的,正則表達式不適合做算術運算,你只能對特定計算的答案進行硬編碼,所以如果你只有一些可能的計算,那麼這樣做是有意義的(我甚至不會爭論,因爲這種硬編碼是不好的,混淆了意圖)。

然而,Java可以告訴你由正則表達式找到的數字的匹配開始和結束於字符串中。這對替換目的會很有用。