我想从字符串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:]

09-25 18:16