我有一个程序,我从用户那里接受输入。
我希望能够检测用户何时说出如下内容:
“将HP 25设置为9999”
然后使用正则表达式提取25和9999。
是吗:
if re.match(r"^Set HP ([\d]+) to ([\d]+)$", userstring)
如果是这样,我如何使用正则表达式提取用户输入的两个数字?
答案 0 :(得分:4)
使用matchobj.groups
m = re.match(r"^Set HP (\d+) to (\d+)$", userstring)
if m:
print m.groups()
示例:
>>> m = re.match(r"^Set HP (\d+) to (\d+)$", "Set HP 25 to 9999")
>>> if m:
print m.groups()
('25', '9999')
>>>
答案 1 :(得分:1)
您可以使用re.findall
>>> s = "Set HP 25 to 9999"
>>> re.findall('\d+', s)
['25', '9999']
或手动提取组:
>>> match = re.match(r"^Set HP (\d+) to (\d+)$", s)
>>> match.group(1)
'25'
>>> match.group(2)
'9999'
请注意match.groups()
会将所有群组作为元组:
>>> match.groups()
('25', '9999')
答案 2 :(得分:0)
你也可以迭代地找到这些数字:
for m in re.finditer(r"\d+",userstring):
print m.group()