如何将语言L转换为正则表达式

时间:2017-10-21 09:09:55

标签: regex regular-language

https://cs.stackexchange.com/questions/82775/to-prove-or-disprove-that-language-is-regular/82780#82780

我在上面的链接中发布了这个问题,但我并没有得到我想要的答案。如果一个数字可以从0开始,链接中提供的答案将是正确的。但我想指出,这是不允许的。这里描述的语言是整数集合,使得数字之和是2的倍数。或者等效地,一组具有偶数个奇数位数的数字(例如2354具有两个奇数3,5)。如何为这种语言派生正则表达式?任何进一步的见解将不胜感激。

1 个答案:

答案 0 :(得分:0)

假设您已经找到偶数和整数。然后你可以通过

任意扩展它
  • 添加偶数,或
  • 添加一个奇数位,后跟0个或更多个偶数位,后跟一个奇数位

结果将是另一个偶数和整数。

现在我们需要一种方法来开始。偶数和整数以

开头
  • 一个非0的偶数位,或
  • 一个奇数位,后跟0个或更多个偶数位,后跟一个奇数位

我们可以把它写成正则表达式:

([2468]|[13579][02468]*[13579])([02468]|[13579][02468]*[13579])*
相关问题