我需要用scala在数学运算中得到括号之间的所有表达式。
我试着用正则表达式做这件事。它适用于如下的表达式:
(2+4)->结果:2+4
4*(3+1)->结果:3+1
但是,我不可能得到所有的值,如下面的示例所示:
(2+1)*(4-3)->结果:2+1)*(4+3
预期结果:
`2+1`
`4+3`其中“公式”是输入表达式。
val regex = Pattern.compile("\\((.*)\\)")
val regexMatcher = regex.matcher(formula)
while (regexMatcher.find()) {
println(regexMatcher.group(1)); //Fetching Group from String
}编辑:如果是(1+(2+3)),最好的结果是1+(2+3)
发布于 2019-07-10 12:25:35
*?而不是*来捕获字符,直到第一个)。合并:
Pattern.compile("""\((.*?)\)""")发布于 2019-07-10 12:12:52
你的复仇女神太贪心了,太费劲了。试一试
([^)]*)这限制了对不是结束括号的字符的重复。
在Scala中,可能是:
val regex = Pattern.compile("\\(([\\)]*)\\)")还请注意,这不支持嵌套括号,例如(1+(2+3))
https://stackoverflow.com/questions/56970366
复制相似问题