正则表达式构建求助:{a,b,c}上满足#a(w)≥2且#b(w)≥2的语言
正则表达式解决方案
匹配规则对应的正则表达式
^(?=(?:[^a]*a){2})(?=(?:[^b]*b){2})[a-c]+$
正则各部分解释
^和$:锚定字符串的开头与结尾,确保匹配完整单词,而非单词片段(?=(?:[^a]*a){2}):正向预查断言,验证字符串至少包含2个a。[^a]*匹配任意数量的非a字符(即b或c),随后匹配一个a,整个组重复2次,保证能找到至少2个独立的a(?=(?:[^b]*b){2}):正向预查断言,验证字符串至少包含2个b,逻辑与上面的a断言一致[a-c]+:匹配由a、b、c组成的任意长度字符串(因预查限制了至少2个a和2个b,实际匹配的字符串长度至少为4)
验证说明
该正则会匹配所有符合以下条件的单词:
- 仅由a、b、c组成
- 包含至少2个a
- 包含至少2个b
- c的数量无限制(可出现0次或多次,位置任意)
示例中的aaabbb、abbaba、bbaaab等都能被匹配;而aaa(无b)、abb(仅1个b)、ccab(仅1个a)这类不满足条件的字符串会被排除。
内容的提问来源于stack exchange,提问作者Shahar David
相关产品推荐
相关产品推荐

