我需要解析excel公式以生成与C兼容的代码。现在我需要解析" power"使用Java的表达式:
1. F15^2
2. (A1*A2)^2
3. SQRT((A1*A2)^2)
我有以下正则表达式:
(\([^)]*\)|\w+)\^(\([^)]*\)|\w+)
此表达式正确解析1.和2.
1. Group1: F15, group2: 2
2. Group1: (A1*A2), group2: 2
然而对于3.它会过多地返回1个括号:
3. Group1: ((A1*A2), group2: 2
我应该如何修改正则表达式,以便第1组变为(A1 * A2)而不是((A1 * A2)?
答案 0 :(得分:0)
如果您只是需要它来处理这些示例,我会将正则表达式更改为:(\([^)(]*\)|\w+)\^(\([^)]*\)|\w+)
(我添加了一个(
)
但总的来说,我不认为正则表达式是正确的方法。我会尝试找一个可以进行括号解析的库,而不是自己尝试实现它。
答案 1 :(得分:0)
添加()应该有效
(\([^)^(]*\)|\w+)\^(\([^)^(]*\)|\w+)