正则表达式 b 的个数可以被 3 整除的所有字符串

Regular Expression All strings where the number of b’s can be evenly divided by 3

我是一名正在做作业的学生,​​可以告诉我 bs 的数量除以 3.Have 的解决方案已经检查过 Whosebug,我没有找到这样的问题。

首先,所有语言都是字符串集,其符号取自某个字母表。你只提到一个符号,b。您的字母表可能是 {b}。或者,也许您的字符串也可以有一个;那么你的字母表是{a, b}。我会假设后者作为这个答案,因为它更难回答并且更能代表所有其他可能的情况。

我们做了一些观察:

  1. 空字符串是语言
  2. 您随时可以在任意位置添加更多实例
  3. 您只能以三的倍数添加更多的 b 实例

具有三个 b 实例的最简单字符串是 bbb。但是,作为正则表达式,这将我们限制为 b 的连续实例。我们希望能够在任何地方添加一个实例;所以考虑

a*ba* ba*ba*

这个正则表达式只为我们提供了恰好包含三个 b 实例的字符串。为了允许任何数字,我们可以使用 Kleene star 并添加更多 a*:

a*(a*ba*ba*ba*)*a*