给定描述正则语言的正则表达式R(没有花哨的反向引用),是否有一种算法方法来构建描述除R描述的所有单词的语言的正则表达式R*?这应该是可能的,因为Wikipedia说:
引用:
引用:
常规语言在各种操作下都是封闭的,也就是说,如果语言K和L是常规的,那么以下操作的结果也是常规的:[...]补集¬L
例如,给定字母表{a,b,c},语言(abc*)+的反转是(a|(ac|b|c).*)?正如DPenner在评论中已经指出的那样,正则表达式的反转可能比原始表达式指数级更大。这使得反转正则表达式不适合实现用于搜索目的的负部分表达式语法。是否有一种算法可以保留正则表达式匹配的O(n*m)运行时特性(其中n是正则表达式的大小,m是输入的长度),并允许否定的子表达式?