1

我正在尝试编写一个正则表达式以在我的 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]?

4

1 回答 1

0

是的,正则表达式不适合做算术,你只能硬编码特定计算的答案,所以只有当你只有几个可能的计算时才有意义(我什至认为这样的硬编码不好并混淆意图)。

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

于 2013-10-27T15:24:01.137 回答