具体的正则表达式骰子滚动更换和计算

时间:2013-10-27 15:19:29

标签: regex

我正在尝试将正则表达式编程用于我的D& D游戏的虚拟桌面(VTT)。

输入是标准字符串:“hp”; 后跟一个数字(范围1-2000 ish); 然后是括号中的骰子表达(例如2d10 + 4表示掷骰2个骰子,并将两个骰子的总和加4)。

hp和骰子表达式之间的数字是骰子表达式的平均得分 - 在这个例子中是5.5(十面骰子的平均得分)乘以2加4 = 15.输入字符串例如:

hp 15(2d10 + 4)

我想要一个正则表达式来识别字符串并用最大滚动替换平均数字。在上面的示例中,将15替换为24.这是否可以使用正则表达式?我的VTT是基于Java的 - 我需要在识别字符串后计算最大值,然后用Java而不是正则表达式替换数字吗?

我认为我有各自的部分,但替换失败了我:

找到“hp”后面的数字 ?&LT = [HH] [PP] \ S)[0-9] +

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

1 个答案:

答案 0 :(得分:0)

是的,正则表达式不适合做算术,你只能对特定计算的答案进行硬编码,所以只有你有一些可能的计算才能做到这一点(我甚至认为不是因为这样硬编码很糟糕并且模糊了意图。)

然而,Java可以告诉您正则表达式找到的数字的匹配在字符串中的开始和结束的位置。这对于替换目的很有用。