我找不到以下问题的正则表达式
字母{a,b,c,d}上的所有字符串,至少有四个c实例和至少两个
实例答案 0 :(得分:1)
使用前瞻:
^(?=(.*c){4,})(?=(.*a){2,})[a-z]+
我不确定“字母”是什么意思 - 我假设“任何字母”,但如果字面意思是a,b,c和d,则将[a-z]+
更改为[a-d]+
答案 1 :(得分:0)
比Bohemian的解决方案更有效率,并且还固定以确保我们不仅匹配可能包含不需要的字符的较长字符串的子字符串:
^(?=(?:[^c]*c){4})(?=(?:[^a]*a){2})[a-z]+$
答案 2 :(得分:0)
如评论中所述,这个问题似乎与从集合论得出的正则表达式的严格数学理论有关。在这种情况下,不允许前瞻;你需要枚举允许的序列。为了简单和清晰起见,我省略了.*
应该在以下列表中的符号之前,之间和之后。
ccccaa|
cccaca|
cccaac|
ccacca|
ccacac|
ccacca|
ccaacc|
caccca|
caccac|
cacacc|
caaccc|
acccca|
acccac|
accacc|
acaccc|
aacccc