我正在阅读Robert Sedgwick的算法中的正则表达式。
这里提到正则表达式
A* | (A*BA*BA*)*
这里作者提到的匹配是:AAA,BBAABB和BABAAA。 与上述正则表达式不匹配的是ABA BBB BABBAAA。
我的问题是BBAABB是如何匹配的,以及BABAAA如何匹配。请解释一下。
一般情况下,我正在寻找如何使用|进行评估正则表达式中的*和*运算符。 在下面的例子中,如果我们有一个+,我们如何才能将b单独置于set中,因为它表示我们必须至少有一个a。
(a+b)* = (λ, a, b, aa, ab, ba, bb, aaa, ...)
答案 0 :(得分:0)
*
和+
之间存在一个区别。放置*
后的字符不能重复。但在+
情况下,它可以有至少1次重复。
在A* | (A*BA*BA*)*
中,BBAABB
有效,原因如下,并且符合(A*BA*BA*)*
模式
A
A*
BA*
而没有A
BA*
和2 A *
末尾的(A*BA*BA*)*
表示该模式可以重复。所以第二次重复是BB
,这是有效的这些是BBAABB
有效的点。