|
|
|
| Пишу сейчас программу на C#. Там есть текстбокс, куда вводится логическая функция вида
ПЕРВЫЙ ОПЕРАНД пробел ЛОГИЧЕСКАЯ ФУНКЦИЯ пробел ВТОРОЙ ОПЕРАНД пробел ЛОГИЧЕСКАЯ ФУНКЦИЯ пробел ТРЕТИЙ ОПЕРАНД ...
и так далее, после последнего операнда ставится точка с запятой и на этом ввод заканчивается. Логические функции - дизъюнкция(U) и конъюнкция(K).
количество операндов - от одного до шести, причём перед каждым может стоять логическое не (¬), а может не стоять.
Чтобы обеспечить корректный ввод, написал такой регэксп:
string pattern = @"(¬)?[a-z](\s((K)|(U))\s(¬)?[a-z]){0,6}[\;]";
|
Однако он некорректно обрабатывает некоторые случаи, например, не срабатывает, если после первого обязательного операнда ввести произвольные символы до точки с запятой. Как можно подправить? | |
|
|