首页 > 解决方案 > 时间:2019-05-10 标签:c++conjuntive normal form regex

问题描述

我想构建一个正则表达式来表示表达式是合取范式(CNF)。

当满足以下条件时,表达式 E 在 CNF 中:

一个例子:E = (P ∨ Q) & (Q ∨ R ∨ S) & (R ∨ Q)

我怎样才能写这样的正则表达式(没有空格)?


我想它一定是这样的:

regex reg("[(~?[PQRS]{1}[v~?[PQRS]{1}]*)&]*(~?[PQRS]{1}[v~?[PQRS]{1}]*)");

但它给了我 regex_error。

标签: c++regex

解决方案


解决了。我正在使用(并且)不正确。

答案是:

regex reg("(\\(~?[PQRS](v~?[PQRS])*\\)&)*\\(~?[PQRS](v~?[PQRS])*\\)");

推荐阅读