D&D ゲームの仮想テーブルトップ (VTT) で使用する正規表現をプログラムしようとしています。
入力は標準文字列です: "hp "; 数字が続きます (範囲は 1 から 2000 っぽい)。角かっこで囲まれたダイス表現が続きます (例: 2d10+4 は、2 つの 10 面ダイスを転がし、2 つのダイスの合計に 4 を足すことを意味します)。
hp とサイコロの式の間の数字は、サイコロの式の平均スコアです。この例では、5.5 (10 面のサイコロの平均スコア) x 2 + 4 = 15 になります。入力文字列の例:
HP 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]? を見つけます。