我需要一种解释x ^ y
的方法(我知道有这样的解决方案可用,但这对我自己来说是一个挑战'#34;无库?")。我考虑过使用RegExp:
(\(*\w+\)*|\(*Math.pow\(\w+,\w+\)\)*=*)+\s*\^\s*(\(*\w\)*)+\)*
(http://regexr.com/3b0dl)和替换字符串"Math.pow($1,$2)"
。
现在,这适用于我迄今为止测试的所有情况,除了以下内容:
(2 ^ (5))
由此取而代之:
Math.pow((2,(5)))
评估(2,(5)
。有没有什么方法可以修复RegExp,使其与)
匹配的次数与匹配第二个catch组中的(
的次数相同?
(2 ^ 3) ^ 5
替换为
Math.pow((2,3)) ^ 5
留下未评估的^
。我认为这可以通过while(input.match("^"){...}
排序来完成,我想知道如果通过RegExp可以做到这一点。
提前感谢您的帮助。