语法 - RegEx

时间:2011-10-02 03:20:09

标签: regex

我正在尝试构造一个正则表达式,无论它们如何分布,a的总数都可以被3整除。 aabaabbaba。这就是我想出的:

b*ab*ab*

现在,有人告诉我,我可以这样做

(b*ab*ab*)*

为什么我需要把它包围起来,为什么需要外面的kleene星呢?

外面的kleene不会分配在括号内的所有a和b中吗?如果那就是那个双kleene意味着什么?

2 个答案:

答案 0 :(得分:4)

对于'a'可被3整除的数量,你的表达式中需要三个'a'。所以正确的表达是:

(b*ab*ab*ab*)*

这个表达式是'a'三次,可能'b'在中间。最后一个明星在必要时说重复(整个括号表达式)。

答案 1 :(得分:0)

*重复整个序列零次或多次。

换句话说,零个或多个匹配b*ab*ab*的子串。