使用解析说明符打印字符串

时间:2016-11-18 20:00:29

标签: java regex

我有一个类似"(+ x (division (- x 1)))"的字符串,可以使用split("\\s*[\\(\\),]+\\s*")

进行解析

输出:

x
sumup
x
1

我需要根据paranthesis和space(它们是说明符)按顺序输出。我的意思是我希望输出:

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

如何克服?

2 个答案:

答案 0 :(得分:0)

这似乎提供了您想要的输出:

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

答案 1 :(得分:0)

你可以这样做:

input.replaceAll("\\s+", "").split("(?<=[-+()\\d])|(?=[-+()\\d])");
  • 首先删除所有空格
  • 然后分开什么是零宽度前瞻和后视分隔符。 Here is a nice article关于前瞻性后视图的工作原理。