我正在尝试编写一个正则表达式以在我的 D&D 游戏的虚拟桌面 (VTT) 中使用。
输入是一个标准字符串:“hp”;后跟一个数字(范围 1-2000 ish);后跟一个带括号的骰子表达式(例如,2d10+4 表示掷 2 个十面骰子,然后在两个骰子的总和上加上 4)。
hp 和骰子表达式之间的数字是骰子表达式的平均得分 - 在本例中为 5.5(十面骰子的平均得分)乘以 2 加 4 = 15。输入字符串,例如:
生命值 15 (2d10+4)
我想要一个正则表达式来识别字符串并用可能的最大滚动替换平均数。在上面的示例中,将 15 替换为 24。正则表达式可以吗?我的 VTT 是基于 Java 的 - 我是否需要在识别字符串后计算最大值,然后在 Java 中而不是在正则表达式中替换数字?
我想我有单独的部分,但替换让我失望了:
查找 "hp" 后面的数字 ?<=[hH][pP]\s)[0-9]+
求 2d10+4 [0-9]+d[0-9]+\s?[\+\-]?\s?[^a-zA-Z]?[0-9]?