我想知道如何构建一个正则表达式来判断一个二进制数是否是3的倍数。我在这个帖子中阅读了Check if a number is divisible by 3,但他们没有使用正则表达式,并且某人绘制的图表是错误的(因为它不接受偶数)。我尝试过:((1+)(0*)(1+))(0),但对于一些值它不起作用。希望你能帮助我。
更新: 好的,谢谢大家的帮助,现在我知道如何绘制NFA,这里我留下了图表和正则表达式:
在图表中,状态是10进制数模3的结果。
例如:要转到状态1,您必须拥有1,然后可以添加1或0,如果添加1,则会得到11(10进制为3),并且此数字模3为0,然后您将弧线绘制到状态0。
更新: 好的,谢谢大家的帮助,现在我知道如何绘制NFA,这里我留下了图表和正则表达式:
在图表中,状态是10进制数模3的结果。
例如:要转到状态1,您必须拥有1,然后可以添加1或0,如果添加1,则会得到11(10进制为3),并且此数字模3为0,然后您将弧线绘制到状态0。
((0*)((11)*)((1((00) *)1) *)(101 *(0|((00) *1 *) *0)1) *(1(000)+1*01)*) *
另一个正则表达式也可以用,但这个更短。
非常感谢:)