相关疑难解决方法(0)

找到DFA的补充?

我被要求显示DFA图和RegEx作为RegEx的补充(00 + 1)*.在之前的问题中,我必须证明DFA的补充是封闭的并且也是正则表达式,所以我知道要将DFA,M转换为补码,M`,我只需要交换初始接受状态和最终接受国家.

但是,似乎RegEx的初始接受状态是{00, 1, ^},最终接受状态也是{00, 1, ^}如此.因此,交换它们只会产生完全相同的RegEx和DFA,这似乎是相互矛盾的.

我做错了什么,或者这个RegEx应该没有真正的补充?

谢谢

regex automata dfa nfa regular-language

15
推荐指数
1
解决办法
2万
查看次数

Rubyish方式反转正则表达式

假设正则表达式来自当前上下文之外的调用代码,然后传递给在当前项目之外实现的另一个调用:

["1", "2"].grep(/1/)        #=> ["1"]
Run Code Online (Sandbox Code Playgroud)

在进行调用时,是否有一种简单的Ruby方式来实现以下行为?

["1", "2"].grep(/1/.negate) #=> ["2"]
Run Code Online (Sandbox Code Playgroud)

此行为类似于使用=~操作员切换操作!~员.它可以使用#select#reject,当然,或者开辟或子类Regexp.但我很好奇Ruby中是否有一种方法可以用上述方式否定正则表达式返回的匹配.另外,我不关心比赛的位置是否false或者nil或者true或者是否与比赛的位置有关.

有一个理论问题是相关的,但超出了这里的简单考虑.


编辑:我得到迭代器是Ruby中过滤列表的一般方法,但是人们忽略了问题的限制.此外,我认为有关正则表达式被颠倒的方式有一些很好的功能.对于我来说,我不认为它过于紧张或过于聪明; 它是一种简单的面向对象编程,也是Ruby擅长的事情.

ruby regex

4
推荐指数
2
解决办法
1747
查看次数

标签 统计

regex ×2

automata ×1

dfa ×1

nfa ×1

regular-language ×1

ruby ×1