正则表达式:在某个等式中匹配否定字母

时间:2012-03-12 19:00:26

标签: java regex

我想在某些函数中匹配单个否定字母并替换为“NANAD-neg_letters”。 单个否定字母表示此字母是++

之间的唯一字母

示例:

F=**A**'+**B**' => NAND-**A**+ **B**
F=**A**'+**B**'+A'B' => A'B'+NAND-**A**+ **B**
F=**A**'+**B**'+A'B =>A'B+NAND-**A**+ **B**
F=*A*'+B+*C*'=>B+NAND-**A**+ **C**
F=AB+*A*'+B+*C*'+D+ABC=>AB+B+D+ABC+NAND-**A**+ **C**

我在Java中编写了以下测试,但它仅适用于第一个示例:

public class Test {
  public static void main (String[] args) {
    String test="A'+K+D'";
    System.out.println (test.replaceAll ("([A-Z])'\\+([A-Z])'([\\+[A-Z]'])?([\\+[A-Z]'])?", "NAND-$1\\+$2$3$4") .replace ("'", ""));
  }
}

任何想法?

1 个答案:

答案 0 :(得分:0)

这是正则表达式不是正确工具的情况之一。你需要一个解析器。