我试图在表达式中捕捉括号,但我没有成功。
我使用这个正则表达式:
"(\\()|(\\))"
但是没有工作。
我是怎么做到的。
我在分割功能中使用它。
我输入了这个字符串:
"(N >= 20)"
我需要这个分裂:
(
N
>=
20
)
我可以拆分N,> =,20,但我不能拆分(正则表达式匹配或拆分括号
答案 0 :(得分:2)
正则表达式对于您尝试做的事情来说是一个糟糕的解决方案。这是一个XY问题。
您应该使用中缀算术算法,例如C ++中的this one。
用括号解析中缀表达式(如 ((2 * 4-6 / 3)*(3 * 5 + 8/4)) - (2 + 3))
需要一个堆栈。算法是:
有一个字符串可用于存储项目
对于中缀(带有parens)表达式中的每个项目
如果该项目是数字,则将其添加到带空格的字符串
如果该项目是运营商,那么
虽然堆栈不是空的,并且操作员位于顶部且位于顶部 顶部的运算符优先于项目
=在堆栈顶部弹出操作符
=将弹出的运算符添加到带有空格的字符串
将项目推入堆栈
否则,如果该项目是左栏杆
将项目推入堆栈
否则,如果该项目是正确的paren
从堆栈中弹出一个东西。
虽然那件事不是左派人士
=使用空格
将事物添加到字符串中=从堆栈中弹出一个东西
虽然堆栈不是空的
从堆栈中弹出一个东西。
将其添加到带空格的字符串中。
从字符串中删除最后一个字符(空格)。
答案 1 :(得分:0)
如果你想匹配)或(使用正则表达式[()]。