如果将辅音有向图映射成单个辅音,则最长的单词是解剖病理学的10*VC字符串。
如果您正确映射y,那么您将得到完整的字符串,如乙酰丙酮作为8*VC,下胚轴作为8*CV。
如果不需要字符串是完整的,那么在化学中可以得到9*CV模式,在想象力过剩中可以得到9*VC模式。
如果允许连续辅音或元音交替出现,则有许多10*个单词,如(C+V+)+。包括腹腔镜子宫切除术和输尿管膀胱吻合术。
主要技巧是首先将所有辅音映射到C,将所有元音映射到V,然后进行VC或CV匹配。对于Y,您必须执行lookaheads和/或lookbehinds来确定它是否映射到该位置的C或V。
我可以向你展示我使用的模式,但你可能不会对我满意。:)例如:(?<= \p{IsVowel} ) [yY] (?= \p{IsVowel} ) # counts as a C
(?<= \p{IsConsonant} ) [yY] # counts as a V
[yY] (?= \p{IsVowel} ) # counts as a C
然后,主要的诀窍就是通过(?= ( (?: \p{IsVowel} \p{IsConsonant} ) )+ ) )
以及(?= ( (?: \p{IsConsonant} \p{IsVowel} ) )+ ) )
然后你数一数,看看哪个最长。
但是,由于Python支持不(默认/直接)支持regex中的属性,就像我在自己的程序中使用它们一样,这使得首先将字符串预处理为除C和V之外的任何内容变得更加重要。否则,您的模式看起来真的很难看。