匹配的字符串基于长度。字符串年代当且仅当(|S| 模 3)>(|S| 模 2) 在哪里|S|是字符串的长度。
我试图找到 wrt LCM,但我不知道如何继续解决方案。
可以接受的长度是 2、4、5、8、10、11、...如何构建这个正则表达式。
答案1
为了简单起见,让字符串由小写字母组成,所以[a-z]
一个字符
可接受的长度为序列 2、4、5、8、10、11、14、16、17、20、22,... 我们可以将它们分组为 {2}、{4,5,8}、{10,11,14}、{16,17,20},...
请注意,6 加 4 等于 10,6 加 5 等于 11,以此类推。
要构建正则表达式,首先考虑特殊情况:长度为 2,正则表达式将类似,[a-z]{2}
长度为 4、5 和 8 的正则表达式将是[a-z]{4}
,,[a-z]{5}
[a-z]{8}
对于长度大于 8 的字符串,将附加零个或多个六个字符的字符串,因此最终的正则表达式将是
[a-z]{2} + ( [a-z]{4} )( [a-z]{6} )* + ( [a-z]{5} )( [a-z]{6} )* + ( [a-z]{8} )( [a-z]{6} )*