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

Java 删除句子中的括号并分隔字符串,java,string,Java,String,所以。。如果我得到一个字符串,例如: (P=>Q) ^ (L ^ M => P) ^ A 或 如何删除这些括号并将所需的子字符串保留为以下形式: P=>Q, L^M=>P, A 及 谢谢 public static void main(String[] args) { String input = "((~B V P) V M) ^ (B V ~P) ^ (B V ~M)"; String result = input.replaceAll("[ ()

所以。。如果我得到一个字符串,例如:

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

如何删除这些括号并将所需的子字符串保留为以下形式:

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

谢谢

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


我相信有人会想出一些超级棒的正则表达式。同时,这就足够了。

看来您正在为逻辑公式编写解析器。下面是我要做的:

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

无论如何,OP问题中的第一个案例是一个很好的例子,说明了为什么正则表达式不是执行此任务的好工具。我实际上想存储每个字符串并使用它们进行进一步推断。。你的方法听起来很聪明,但有点太费劲了。B你也可以存储字符串以便进一步推断,这不是问题。如果您希望对公式进行推理,您需要将它们分解为各自的组件。一个逻辑公式是一个树形结构,所以你无论如何都需要做这个部分。语法/语法分析器部分也可以手动完成,但是语法分析器生成器通常更容易。。在这种情况下。。什么是形式语法?
~BVPVM, BV~P, BV~M
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);
}