Регулярное выражение: соответствие отрицательной буквы в некотором уравнении - PullRequest
0 голосов
/ 12 марта 2012

Я хотел бы сопоставить одинарные отрицательные буквы в некоторой функции и заменить на "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 голосов
/ 12 марта 2012

Это один из тех случаев, когда регулярное выражение не является подходящим инструментом. Вам нужен парсер.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...