正则表达式捕获(或) - 基本命令不起作用

时间:2014-05-14 17:30:59

标签: java regex

我试图在表达式中捕捉括号,但我没有成功。

我使用这个正则表达式:

  "(\\()|(\\))" 

但是没有工作。

我是怎么做到的。

我在分割功能中使用它。

我输入了这个字符串:

"(N >= 20)"

我需要这个分裂:

 (
 N
 >=
 20
 )

我可以拆分N,> =,20,但我不能拆分(正则表达式匹配或拆分括号

2 个答案:

答案 0 :(得分:2)

正则表达式对于您尝试做的事情来说是一个糟糕的解决方案。这是一个XY问题。

您应该使用中缀算术算法,例如C ++中的this one

  

用括号解析中缀表达式(如   ((2 * 4-6 / 3)*(3 * 5 + 8/4)) - (2 + 3))

     

需要一个堆栈。算法是:

     

有一个字符串可用于存储项目

     

对于中缀(带有parens)表达式中的每个项目

     

如果该项目是数字,则将其添加到带空格的字符串

     

如果该项目是运营商,那么

     

虽然堆栈不是空的,并且操作员位于顶部且位于顶部   顶部的运算符优先于项目

     

=在堆栈顶部弹出操作符

     

=将弹出的运算符添加到带有空格的字符串

     

将项目推入堆栈

     

否则,如果该项目是左栏杆

     

将项目推入堆栈

     

否则,如果该项目是正确的paren

     

从堆栈中弹出一个东西。

     

虽然那件事不是左派人士

     

=使用空格

将事物添加到字符串中      

=从堆栈中弹出一个东西

     

虽然堆栈不是空的

     

从堆栈中弹出一个东西。

     

将其添加到带空格的字符串中。

     

从字符串中删除最后一个字符(空格)。

答案 1 :(得分:0)

如果你想匹配)或(使用正则表达式[()]。