我需要捕获相同模式的多个组。假设我有以下字符串:
HELLO,THERE,WORLD
我写了以下模式
^(?:([A-Z]+),?)+$
我想做的是捕获每个单词,这样第1组是:“ HELLO”,第2组是“ THERE”,第3组是“ WORLD”我的正则表达式实际上只捕获了最后一个,即“世界”。
我正在这里测试我的正则表达式,我想与Swift一起使用它(也许Swift中有一种方法可以某种方式获取中间结果,以便我可以使用它们?)
更新:我不想使用split。现在,我只需要如何捕获与模式匹配的所有组,而不仅仅是最后一个。
split
模式中只有一组,您只能在该组中获得一个准确的结果。如果您的捕获组被模式重复(您+在周围的非捕获组上使用了量词),则只会存储与其匹配的最后一个值。
+
您必须使用语言的正则表达式实现功能来 查找 模式的 所有匹配 项,然后必须删除非捕获组的锚点和量词(并且也可以省略非捕获组本身)。
或者,展开您的正则表达式,并让该模式在要获取结果的每个组中包含一个捕获组:
^([A-Z]+),([A-Z]+),([A-Z]+)$