我想从字符串designator: op1 op2
提取指示符和操作数,其中可以有0个或更多操作数,并且允许多个空格。我在Python中使用了以下正则表达式
import re
match = re.match(r"^(\w+):(\s+(\w+))*", "des1: op1 op2")
问题在于在匹配组中仅找到des1和op2,而在op1中找不到。有人知道为什么吗?
上面代码中的组是
组0:des1:op1 op2
第1组:des1
第2组:op2
第3组:op2
最佳答案
两者都被“发现”,但是该小组只能“捕获”一个。如果需要捕获多个组,则需要多次使用正则表达式功能。您可以执行以下操作,首先重写主表达式:
match = re.match(r"^(\w+):(.*)", "des1: op1 op2")
那么您需要提取各个小节:
ops = re.split(r"\s+", match.groups()[1])[1:]