在Groovy中拆分字符串并将匹配的拆分器保留在列表中

在Groovy中拆分字符串并将匹配的拆分器保留在列表中,groovy,Groovy,嘿,我有python背景,groovy中的split函数有几个问题(但我想是java…)。具体来说,我想保留我的拆分字符,因为在拆分时我不知道它是什么。例如,假设我有以下字符串: "(if (= 2 (- 3 1)) 4 (- 3 1))" 我想把它分成: ['', '(', 'if ', '(', '= 2 ', '(', '- 3 1', ')', '', ')', ' 4 ', '(', '- 3 1', ')', '', ')', ''] (注意:我不是要编写lisp/scheme解

嘿,我有python背景,groovy中的split函数有几个问题(但我想是java…)。具体来说,我想保留我的拆分字符,因为在拆分时我不知道它是什么。例如,假设我有以下字符串:

"(if (= 2 (- 3 1)) 4 (- 3 1))"
我想把它分成:

['', '(', 'if ', '(', '= 2 ', '(', '- 3 1', ')', '', ')', ' 4 ', '(', '- 3 1', ')', '', ')', '']
(注意:我不是要编写lisp/scheme解析器,这只是一个嵌套括号的简单示例。)


在Groovy中有一种简单的方法可以做到这一点吗?

关于基本的JDK,这意味着它可以做到,但不容易做到(尽管这是主观的)


这就剩下了Groovy JDK。根据,特别是字符串上的附加方法,我看不到任何东西能够满足您的要求。

关于基本JDK,这意味着它可以实现,但不容易实现(尽管这是主观的)


这就剩下了Groovy JDK。根据,特别是关于字符串的附加方法,我看不到任何东西能够满足您的要求。

我不认为您真正的意思是拆分字符串。从您的示例来看,它更像是您正在尝试解析它,因此您需要的是一个标记器。
有很多解决方案可供选择。这方面的信息可能是一个很好的起点

我不认为你真的是想分裂这条线。从您的示例来看,它更像是您正在尝试解析它,因此您需要的是一个标记器。
有很多解决方案可供选择。这方面的信息可能是一个很好的起点

谢谢,@Polygene很疯狂,疯狂的回答满足了我的需要。谢谢谢谢,@Polygene很疯狂,疯狂的回答满足了我的需要。谢谢谢谢,但我真的不想仅仅为了看(和)而接受一个巨大的项目。但是我理解它不需要是巨大的和CS中有趣的一部分。谢谢,但我真的不想接受一个巨大的项目只是为了看(和)。我理解它不需要是巨大的和CS中有趣的一部分。