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

How to convert language L into regular expression

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

我把问题贴在了上面的link,我并没有得到我想要的答案。如果数字可以以 0 开头,link 中提供的答案将是正确的。但我想指出,这是不允许的。这里描述的语言是一组整数,使得数字之和是二的倍数。或者等价地,一组具有偶数个奇数位的数字(例如 2354 有两个奇数 3,5)。我怎样才能推导出这种语言的正则表达式?任何进一步的见解将不胜感激。

假设您已经找到了一个偶数和整数。然后你可以任意扩展它

  • 加偶数,或
  • 添加一个奇数位,后跟 0 个或多个偶数位,再跟一个奇数位

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

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

开头
  • 不是 0 的偶数,或者
  • 一个奇数位,后接0个或多个偶数位,再接一个奇数位

我们可以将其记为正则表达式:

([2468]|[13579][02468]*[13579])([02468]|[13579][02468]*[13579])*