自动机正则表达式中(ab)*与[ab]*的区别是什么?
(ab)* 和 [ab]* 的正则表达式区别 这俩的核心差异在于匹配的单元和规则完全不同:
(ab)*:是将ab作为一个不可拆分的整体,匹配这个连续字符串重复0次或多次。
能匹配的内容只有:空字符串、ab、abab、ababab……这类严格按照a紧跟b的顺序重复的字符串,单独的a、b,或者ba、aa这类组合都无法被匹配。[ab]*:是匹配任意数量(0次或多次)的单个a或单个b,[ab]表示单个字符只能是a或者b,没有顺序要求。
能匹配所有由a和b组成的字符串,比如空字符串、a、b、aa、bb、ab、ba、aab、bab……只要每个字符是a或b,不管顺序和数量都可以。
简单说,(ab)*的匹配范围是[ab]*的一个子集——只有ab连续重复的字符串才符合(ab)*的规则,而[ab]*包含了所有a、b的任意组合。
内容的提问来源于stack exchange,提问作者Duy Duy
相关产品推荐
相关产品推荐

