正则表达式格式混乱

Regular Expression Format Confusion

我正在努力了解一些正则表达式,以便稍后编写编译器。

如果我有表达式:

(a 或 b)*

这和a*或b*一样吗?还是意味着你可以选择a或b零次或多次。

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

非常感谢

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

这确实意味着 "any string of any length (including 0) made up only of as and bs"。换句话说,括号就像在任何代数表达式中一样工作,以定义子表达式:*(后缀)运算符应用于子表达式 a|b.

有趣的事实:(a*b*)*(a|b)*.

完全相同的一组字符串