正则表达式帮助

正则表达式帮助

匹配的字符串基于长度。字符串年代当且仅当(|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} )*

相关内容