我需要拆分包含基本数学表达式的字符串,例如:
"(a+b)*c"
或
" (a - c) / d"
分隔符是 + - * / ( ) 和空格,我需要它们作为独立的标记。基本上结果应该是这样的:
"("
"a"
"+"
"b"
")"
"*"
"c"
对于第二个例子:
" "
"("
"a"
" "
"-"
...
我阅读了很多关于使用不太复杂的分隔符的类似问题的问题,常见的答案是使用零空间正向前瞻和后向。
像这样:(?<=X | ?=X)
X 代表分隔符,但是将它们放在这样的类中:
[\\Q+-*()\\E/\\s]
不能以所需的方式工作。
那么我如何格式化分隔符以使拆分按我需要的方式工作?
---更新---
字类字符和较长的组合不应拆分。
如“ab”“c1”或“12”。
或者简而言之,我需要与 StringTokenizer 相同的结果,给出参数“-+*/()”和 true。