2016-11-18 86 views
0

我有一个字符串象"(+ x (division (- x 1)))"通过其可以使用被解析split("\\s*[\\(\\),]+\\s*")打印字符串解析符

输出) 为了。我的意思是我期望输出:

(
+ 
x 
(
division 
(
- 
x 
1 
) 
) 
) 

如何克服它?

回答

0

这似乎提供您所需的输出:

s.replaceAll("([\\(\\)\\ ])","\n$1\n").replaceAll("\\s*\n+","\n") 
+0

我建议的片段仍然会产生所需的输出。 – retrospectacus

+0

我想你正在寻找一个数组,而不是多行字符串 - 只需在末尾添加.split(“\ n”)即可。 – retrospectacus

0

你可以这样说:

input.replaceAll("\\s+", "").split("(?<=[-+()\\d])|(?=[-+()\\d])"); 
  • 首先我们删除所有空格
  • 再拆什么留下了零宽度预览和后视分隔符。 Here is a nice article关于预见性后视的工作原理。