正则表达式格式混乱
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)*
.
完全相同的一组字符串
我正在努力了解一些正则表达式,以便稍后编写编译器。
如果我有表达式:
(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)*
.