从你共享的结构来看
rolling xdy(1+2+3...+z)=a
将表示数字的everyletter替换为
\d+
(一个或多个数字)并进行一些调整,您将获得
rolling \d+d\d+\((?:\d+\+)*\d+\)=\d+
Regex demo
import re
text = "rolling 7d10(1+4+5+3+8+8+3)=32rolling 7d10(6+8+3+9+7+10+8)=51rolling " \
"7d10(7+7+6+6+8+3+5)=42rolling 4d10(3+3+3+4)=13rolling " \
"7d10(5+5+10+7+4+9+10)=50rolling 1d10 + 8(10)+8=18"
results = re.findall(r"rolling \d+d\d+\((?:\d+\+)*\d+\)=\d+", text)
print(results)
['rolling 7d10(1+4+5+3+8+8+3)=32', 'rolling 7d10(6+8+3+9+7+10+8)=51',
'rolling 7d10(7+7+6+6+8+3+5)=42', 'rolling 4d10(3+3+3+4)=13',
'rolling 7d10(5+5+10+7+4+9+10)=50']
请注意,最后一个是无效的,因为有数字和数字
+
在括号外签名