如何捕获多个重复的组?

如何捕获多个重复的组?

我需要捕获相同模式的多个组。假设我有以下字符串:

HELLO,THERE,WORLD

我写了以下模式

^(?:([A-Z]+),?)+$

我想做的是捕获每个单词,这样第1组是:“ HELLO”,第2组是“ THERE”,第3组是“ WORLD”我的正则表达式实际上只捕获了最后一个,即“世界”。

我正在这里测试我的正则表达式,我想将它与Swift一起使用(也许Swift中有一种方法可以某种方式获取中间结果,以便我可以使用它们?)

更新:我不想使用split。我现在只需要如何捕获与模式匹配的所有组,而不仅仅是最后一个。


眼眸繁星
浏览 774回答 3
3回答

红颜莎娜

模式中只有一组,您只能在该组中获得一个准确的结果。如果您的捕获组被该模式重复(您+在周围的非捕获组上使用了量词),则只会存储与其匹配的最后一个值。您必须使用语言的正则表达式实现函数来查找模式的所有匹配项,然后必须删除非捕获组的锚点和量词(并且也可以省略非捕获组本身)。或者,展开您的正则表达式,并让该模式在要获取结果的每个组中包含一个捕获组:^([A-Z]+),([A-Z]+),([A-Z]+)$

慕后森

我认为您需要这样的东西。b="HELLO,THERE,WORLD"re.findall('[\w]+',b)在Python3中哪个会返回['HELLO', 'THERE', 'WORLD']
打开App,查看更多内容
随时随地看视频慕课网APP