删除句子中的括号并分隔字符串

时间:2013-12-08 20:39:20

标签: java string

所以..如果我有一个字符串,如:

(P=>Q) ^ (L ^ M => P) ^ A

((~B V P) V M) ^ (B V ~P) ^ (B V ~M)

如何删除这些括号并在表单中保留我希望的子字符串:

P=>Q, L^M=>P, A

~BVPVM, BV~P, BV~M

谢谢!

2 个答案:

答案 0 :(得分:2)

看来你正在为逻辑公式编写解析器。这就是我要做的事情:

  • 为公式定义正式语法,并使用ANTLR等工具生成解析器。
  • 使用生成的解析器解析字符串,并构造基于树的数据结构来表示这些公式。
  • 遍历树并根据需要打印字符串。在你的情况下,这意味着将连词改为逗号并保持其他一切不变。

答案 1 :(得分:0)

public static void main(String[] args) {
    String input = "((~B V P) V M) ^ (B V ~P) ^ (B V ~M)";
    String result = input.replaceAll("[ ()]", "")
                         .replaceAll("\\^", ", ");
    System.out.println(result);
}

输出:

  

~BVPVM,BV~P,BV~M

我确信有人会想出一些非常棒的正则表达式。与此同时,这就足够了。