如何多次查找一个组



我有一个这样的列表:

points = ( (41,69) (39,69)  ) ,
points = ( (41,73) (39,73) (39,71)  ) ,
points = ( (9,15) (0,15)  ) ,
points = ( (15,15) (9,15)  ) ,
points = ( (15,22) (9,22) (9,15)  ) ,

我的目标是把每一行的元组分成不同的组。所以对于第一行,我想得到两组具有(41,69)(39,69)的,对于第二行,我想要得到三组具有(41,73)(39,73)(39,71)

我尝试了这个正则表达式:

points = ( (((d+,d+)) )+ )

但它只返回最后一个元组,例如第一行(39,69)(39,69),第二行(39,71)(39,71)(也是两组,而不是我所期望的三组(。

这个怎么样。它将为每个元组提供一次。这很简单,如果你不需要它所在的上下文。

([^()]*)

https://regex101.com/r/I294M6/1

捕获组的可变数量不是一个好办法。不同的发动机可能会对它们进行不同的编号。例如,abcdef中的(www)+将与abcdef匹配,但第一个捕获组是什么?可能是其中之一。

从我在演示中看到的,它通常是def,但我不会依赖它。

捕获的组应该显式编写,这不符合您的要求。

无论如何,我不会使用这样的构造,也不会使用单元组匹配和迭代匹配,而不是过度捕获组。我推荐谓词答案中建议的模式:
([^()]*)

说明:
(/)-从字面上匹配()
[^()]-匹配除()之外的任何内容,无需在字符类中转义它们