我正在尝试构造一个正则表达式,无论它们如何分布,a的总数都可以被3整除。 aabaabbaba。这就是我想出的:
b*ab*ab*
现在,有人告诉我,我可以这样做
(b*ab*ab*)*
为什么我需要把它包围起来,为什么需要外面的kleene星呢?
外面的kleene不会分配在括号内的所有a和b中吗?如果那就是那个双kleene意味着什么?
答案 0 :(得分:4)
对于'a'可被3整除的数量,你的表达式中需要三个'a'。所以正确的表达是:
(b*ab*ab*ab*)*
这个表达式是'a'三次,可能'b'在中间。最后一个明星在必要时说重复(整个括号表达式)。
答案 1 :(得分:0)
外*
重复整个序列零次或多次。
换句话说,零个或多个匹配b*ab*ab*
的子串。