我正在编写正则表达式以提取不确定数量的数字字符串,这些数字字符串将出现在特定“开始”标记之后的列表中。
下面是我正在做的实际匹配的简化版本。在下面的示例中,我有两个正则表达式,不同之处仅在于它们使用+
还是*
来指定组中要查找的数字的重复次数。
只有这两个中的第一个成功返回期望的匹配。
我的理解是+
和*
在默认情况下都是贪婪的。因此,我会认为,两者都应寻求找到“数字组” (\d{1,4},?\s*)
的全部四个重复,以及+
是将组的最小可接受重复设置为1还是将{ {1}}将可接受的最小重复次数设置为0没关系。
什么解释了这种行为?
注意:我在这里试图了解导致观察到的行为的原因。在这种情况下,我不是在寻找“更轻松”的方式来返回所需的特定比赛。 (例如,在这种特定情况下,有几种方法可以简化“数字组” *
,但在实际应用中,该组实际上更复杂,不便于简化,从而避免了使用分组的RE。)< / p>
(\d{1,4},?\s*)