我试图绕过一些正则表达式,以便稍后对编译器进行编程。
如果我有表达式:
(a或b)*
这与*或b *相同吗?或者这是否意味着您可以选择a或b零次或多次。
例如,使用此正则表达式,我可以生成{ababababa}还是只生成{aaaaaaa}或{bbbbbbb}的字符串?如果输入符号是b那么这是否意味着只有b可以出现零次或多次,或者也可能第二次出现?
非常感谢
答案 0 :(得分:1)
在大多数正则表达式库中,or
运算符拼写为 | ,因此您的正则表达式将为(a|b)*
。
这确实意味着“任何长度(包括0)的任何字符串仅由 a 和 b s组成”。换句话说,括号与任何代数表达式一样,用于定义子表达式: * (后缀)运算符应用于子表达式a|b
。
有趣的事实:(a*b*)*
与(a|b)*
完全相同。