Regex 如何找到每一个出现的模式,并匹配整个行每一次?

Regex 如何找到每一个出现的模式,并匹配整个行每一次?,regex,kotlin,Regex,Kotlin,今天的正则表达式问题是获取所提供的模式,并且每次它发生时,都要执行整个过程。我尝试了一种方法: 我正在寻找方括号中的任何文本,比如:[foo],[bar],所以模式是(\[([a-zA-Z]+?)\]) 现在,为了让它占据整个线路,我得到了这个: ^.*(\[([a-zA-Z]+?)\])*$ 但这种解决方案只需要模式的最后一次出现。设置为非贪婪只会出现第一次 在提供的链接中,regex模式应该返回2个匹配项,找到的是同一整行和模式组 有人对如何实现这一点有想法吗?您使用的是什么编程语言(或

今天的正则表达式问题是获取所提供的模式,并且每次它发生时,都要执行整个过程。我尝试了一种方法:

我正在寻找方括号中的任何文本,比如:[foo],[bar],所以模式是
(\[([a-zA-Z]+?)\])

现在,为了让它占据整个线路,我得到了这个:

^.*(\[([a-zA-Z]+?)\])*$
但这种解决方案只需要模式的最后一次出现。设置为非贪婪只会出现第一次

在提供的链接中,regex模式应该返回2个匹配项,找到的是同一整行和模式组


有人对如何实现这一点有想法吗?

您使用的是什么编程语言(或regex风格)?目前它用于Kotlin。这在regex中是不可能的。如果Kotlin regex支持无限宽度的查找模式,你就可以做到这一点,然后,每次匹配至少可以得到三个组。我还可以使用\n拆分文本并迭代所有拆分,但我想知道是否有可能仅使用正则表达式模式进行拆分。@Andrew您也可以找到至少包含一个
[…]
(使用
^.\[[a-zA-Z]+\].$
)然后迭代匹配以查找子匹配。这在.NET中非常容易,因为它支持重复组(AKA捕获)。不幸的是,您的正则表达式引擎不支持这一点。