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

时间:2011-01-07 01:36:21

标签: groovy

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

"(if (= 2 (- 3 1)) 4 (- 3 1))"

我想把它分成:

['', '(', 'if ', '(', '= 2 ', '(', '- 3 1', ')', '', ')', ' 4 ', '(', '- 3 1', ')', '', ')', '']

(注意:我不是要编写一个lisp / scheme解析器,这只是一个嵌套括号的简单示例。)

在Groovy中有一种简单的方法吗?

2 个答案:

答案 0 :(得分:1)

关于基本的JDK,this question (and answers)暗示它可以完成,但不容易(虽然这是主观的)。

离开了Groovy JDK。根据{{​​3}},特别是String上的其他方法,我没有看到任何能够提供你所要求的东西。

答案 1 :(得分:0)

我认为你的意思并不是要分裂字符串。从您的示例看,它看起来更像是您尝试解析它所以您需要的是 tokenizer 。 有很多解决方案可供选择。关于lexical analysis的信息可能是一个很好的起点。