正则表达式格式混淆

时间:2016-01-27 18:43:30

标签: compilation expression regular-language formal-languages

我试图绕过一些正则表达式,以便稍后对编译器进行编程。

如果我有表达式:

(a或b)*

这与*或b *相同吗?或者这是否意味着您可以选择a或b零次或多次。

例如,使用此正则表达式,我可以生成{ababababa}还是只生成{aaaaaaa}或{bbbbbbb}的字符串?如果输入符号是b那么这是否意味着只有b可以出现零次或多次,或者也可能第二次出现?

非常感谢

1 个答案:

答案 0 :(得分:1)

在大多数正则表达式库中,or运算符拼写为 | ,因此您的正则表达式将为(a|b)*

这确实意味着“任何长度(包括0)的任何字符串仅由 a b s组成”。换句话说,括号与任何代数表达式一样,用于定义子表达式: * (后缀)运算符应用于子表达式a|b

有趣的事实:(a*b*)*(a|b)*完全相同。